python画图常规设置方式


Posted in Python onMarch 05, 2020

python绘图的包大家应该不会陌生,但是,对图的常规设置不一定会知道(其实自己也是才知道的),比如:坐标轴的字体大小、颜色设置;标题的字体颜色大小设置;线的粗细、颜色;图片风格的设置等。了解这些常规设置必定会让图片更加美观。

下面就具体来说说matplotlib中有哪些常规设置。

我主要总结了这几个函数:

plt.style.use()函数;可以对图片的整体风格进行设置。可以通过plt.style.availabel知道一共有多少种主题。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib as mpl
print plt.style.availabel

python画图常规设置方式

我们试用其中两个主题。

plt.style.use("fivethirtyeight")
data = np.random.randn(50)
plt.scatter(range(50), data)

python画图常规设置方式

with plt.style.context(('dark_background')):
  plt.plot(np.sin(np.linspace(0, 2 * np.pi)), 'r-o') # "r-o"表示红色的点用线连接起来。
plt.show()

python画图常规设置方式

mpl.rcParams()函数;这个函数可以设置图片的坐标轴以及标题的字体大小、颜色、宽度等。同时,也可以用mpl.rcParams.keys()进行查看有哪些设置。

python画图常规设置方式

mpl.rcParams['xtick.labelsize'] = 16
mpl.rcParams["ytick.color"] = 'b'
plt.plot(range(50), data, 'g^')
plt.show()

python画图常规设置方式

这张图就通过rcParams()函数设置了y轴的字体颜色,x轴的字体大小。同时,将点的marker变成了三角形、颜色变为了绿色。

mpl.rc()函数;它可以用来设置线的粗细、风格、颜色等。

mpl.rc('lines', linewidth=4, color='r', linestyle='-.')
plt.plot(data)

python画图常规设置方式

fontdict()函数;也可以来办同样的事情。

font = {'family' : 'monospace',
    'weight' : 'bold',
    'size'  : 'larger',
    'color' : "r"
    }
plt.scatter(range(50), data)
plt.xlabel("number", fontdict=font)

python画图常规设置方式

font()字典中主要存在这么几类键:

font.family ;一共有5种设置: serif sans-serif cursive antasy monospace

font.style ;一种有3种设置:normal italic oblique

font.variant ;一共有2种设置:normal or small-caps

font.weight ;一共有4种设置:normal, bold, bolder, lighter

font.stretch ;一共有13种设置:

ultra-condensed, extra-condensed, condensed, semi-condensed, normal, semi-expanded, expanded, extra-expanded, ultra-expanded, wider, and narrower. font.size ;默认值是10pt

plt.setp()函数;也是可以设置线的粗细以及颜色,还可以设置坐标轴的方向,位置。

例如:

setp(lines, 'linewidth', 2, 'color', 'r')

借用帮助文档上的一个例子:

import numpy as np
import matplotlib.pyplot as plt
data = {'Barton LLC': 109438.50,
    'Frami, Hills and Schmidt': 103569.59,
    'Fritsch, Russel and Anderson': 112214.71,
    'Jerde-Hilpert': 112591.43,
    'Keeling LLC': 100934.30,
    'Koepp Ltd': 103660.54,
    'Kulas Inc': 137351.96,
    'Trantow-Barrows': 123381.38,
    'White-Trantow': 135841.99,
    'Will LLC': 104437.60}
group_data = list(data.values())
group_names = list(data.keys())
group_mean = np.mean(group_data)
fig, ax = plt.subplots()
ax.barh(group_names, group_data)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45, horizontalalignment='right')
ax.set(xlim=[-10000, 140000], xlabel='Total Revenue', ylabel='Company',
    title='Company Revenue')

python画图常规设置方式

可以看到x轴坐标斜向45°旋转了,整个图片变得更加美观了。为了对数据更加一步分析,做下面操作:

python画图常规设置方式

def currency(x, pos):
  """The two args are the value and tick position"""
  if x >= 1e6:
    s = '${:1.1f}M'.format(x*1e-6)
  else:
    s = '${:1.0f}K'.format(x*1e-3)
  return s
formatter = FuncFormatter(currency)
fig, ax = plt.subplots(figsize=(6, 8))
ax.barh(group_names, group_data)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45, horizontalalignment='right')
 
ax.set(xlim=[-10000, 140000], xlabel='Total Revenue', ylabel='Company',
    title='Company Revenue')
ax.xaxis.set_major_formatter(formatter)


fig, ax = plt.subplots(figsize=(8, 8))
ax.barh(group_names, group_data)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45, horizontalalignment='right')
 
# 以所有收益的平均值画一条垂直线,看哪些公司是超越平均收益的
ax.axvline(group_mean, ls='--', color='r')
 
# 标注新成立的公司
for group in [3, 5, 8]:
  ax.text(145000, group, "New Company", fontsize=10,
      verticalalignment="center")
 
# 将标题移动一点,与图片保持一点距离。
ax.title.set(y=1.05)
ax.set(xlim=[-10000, 140000], xlabel='Total Revenue', ylabel='Company',
    title='Company Revenue')
ax.xaxis.set_major_formatter(formatter)
ax.set_xticks([0, 25e3, 50e3, 75e3, 100e3, 125e3])
plt.show()

python画图常规设置方式

现在好了,可以直观的看出哪些公司是新成立得,同时哪些公司的收益是超越平均水平的。对之后的数据分析和统计都是有非常大的帮助的。

以上这篇python画图常规设置方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python tempfile模块学习笔记(临时文件)
May 25 Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
python实现知乎高颜值图片爬取
Aug 12 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
python中有函数重载吗
May 28 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
python中的错误如何查看
Jul 08 Python
Python绘图之二维图与三维图详解
Aug 04 Python
关于python类SortedList详解
Sep 04 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 #Python
python入门之井字棋小游戏
Mar 05 #Python
解决Python图形界面中设置尺寸的问题
Mar 05 #Python
python实现简单井字棋小游戏
Mar 05 #Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
Mar 04 #Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 #Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 #Python
You might like
我的论坛源代码(八)
2006/10/09 PHP
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
jQuery插件开发全解析
2012/10/10 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
Prototype框架详解
2015/11/25 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
django query模块
2019/04/20 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
python基于socket函数实现端口扫描
2020/05/28 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
学术会议欢迎词
2014/01/09 职场文书
《童年》教学反思
2014/02/18 职场文书
伊琍体标语
2014/06/25 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
机器人总动员观后感
2015/06/09 职场文书
运动会观后感
2015/06/09 职场文书
商业计划书之服装
2019/09/09 职场文书
导游词之西安骊山
2019/12/20 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS