matplotlib从绘图到排版
绘图
线与填充
1 | import matplotlib.pyplot as plt |
散点图
常用参数
x,y:表示的是shape大小为(n,)的数组,也就是我们即将绘制散点图的数据点,输入数据。
s:表示的是大小,是一个标量或者是一个shape大小为(n,)的数组,可选,默认20。
c:表示的是色彩或颜色序列,可选,默认蓝色’b’。但是c不应该是一个单一的RGB数字,也不应该是一个RGBA的序列,因为不便区分。c可以是一个RGB或RGBA二维行数组。
marker:MarkerStyle,表示的是标记的样式,可选,默认’o’。
cmap:Colormap,标量或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap,可选,默认None。
norm:Normalize,数据亮度在0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认None。
vmin,vmax:标量,当norm存在的时候忽略。用来进行亮度数据的归一化,可选,默认None。
alpha:标量,0-1之间,可选,默认None。
linewidths:也就是标记点的长度,默认None。
marker
$1.$常用颜色:'b'
blue 蓝
'g'
green 绿
'r'
red 红
'c'
cyan 蓝绿
'm'
magenta 洋红
'y'
yellow 黄
'k'
black 黑
'w'
white 白
$2.$
$3.linestyle$'-'
solid line style 实线
'--'
dashed line style 虚线
'-.'
dash-dot line style 点画线
':'
dotted line style 点线
1 | import matplotlib.pyplot as plt |
频度分布图
hist官网
函数:matplotlib.pyplot.hist(x,bins=None,range=None, density=None, bottom=None, histtype=’bar’, align=’mid’, log=False, color=None, label=None, stacked=False, normed=None)
常用参数:
x: 数据集,最终的直方图将对数据集进行统计
bins: 统计的区间分布
range: tuple, 显示的区间,range在没有给出bins时生效
**density**: bool,默认为false,显示的是频数统计结果,
为True 则显示频率统计结果,这里需要注意,
频率统计结果=区间数目/(总数 *区间宽度),
和normed效果一致,官方推荐使用density
facecolor:例如'g',颜色
alpha:透明度
histtype: 可选{'bar', 'barstacked', 'step', 'stepfilled'}之一,默认为 bar,推荐使用默认配置,step使用的是梯状,stepfilled则会对梯状 内部进行填充,效果与bar类似
align: 可选{'left', 'mid', 'right'}之一,默认为'mid',
控制柱状图的水平分布,left或者right,会有部分空白区域,
推荐使用默认
log: bool,默认False,即y坐标轴是否选择指数刻度
stacked: bool,默认为False,是否为堆积状图
点线图
常用参数
plot(x, y, color=’green’, marker=’o’, linestyle=’dashed’,
linewidth=2, markersize=12)
实例
1 | import matplotlib.pyplot as plt |
柱状图
常用参数
x,包含所有柱子的下标的列表,也就是每个柱子的标签
left 每个柱x轴左边界
bottom 每个柱y轴下边界
height, 包含所有柱子的高度值的列表
width, 每个柱子的宽度。 可以指定一个固定值,
那么所有的柱子都是一样的宽。 或者设置一个列表,
这样可以分别对每个柱子设定不同的宽度
align, 柱子对齐方式,有两个可选值:center 和 edge
color, 柱子的颜色,可传入一个固定值或一个列表
edgecolor, 柱子的边框颜色,可传入一个固定值或一个列表
linewidth, 每根柱子的边框宽度。 如果没有设置,默认没有边框
tick_label, 每根柱子上显示的标签, 默认是没有
xerr x方向error bar
yerr y方向error bar
ecolor error bar颜色
capsize error bar横线宽度(default 3)
实例
1 | import matplotlib.pyplot as plt |
排版
图例
legend官网
常用参数
‘loc:图例位置,可取(‘best’, ‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’, ‘center left’, ‘center , right’, ‘lower center’, ‘upper center’, ‘center’) ;若是使用了bbox_to_anchor,则这项就无效了
fontsize: int或float或{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’},字体大小;
frameon: 是否显示图例边框,
ncol: 图例的列的数量,默认为1,
title: 为图例添加标题
shadow: 是否为图例边框添加阴影,
markerfirst: True表示图例标签在句柄右侧,false反之,
markerscale: 图例标记为原图标记中的多少倍大小,
numpoints: 表示图例中的句柄上的标记点的个数,一般设为1,
fancybox: 是否将图例框的边角设为圆形
framealpha: 控制图例框的透明度
borderpad: 图例框内边距
labelspacing: 图例中条目之间的距离
handlelength: 图例句柄的长度
bbox_to_anchor
实例
里面也介绍了如何使得保存的图像分辨率提高1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30import matplotlib.pyplot as plt
import matplotlib
import numpy as np
plt.figure()
t = np.arange(0., 5., 0.2)
matplotlib.rcParams["font.family"]="KaiTi"
# red dashes, blue squares and green triangles
p=plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.xlabel("X轴",size=12)
plt.ylabel("Y轴",size=12)
plt.legend((p[0],p[1],p[2]),(r"$t$",r"$t^2$",r"$t^3$")
,loc='center'
,bbox_to_anchor=(1.2,0.2)
, fontsize=12
, frameon=1
, fancybox=True
, framealpha=0.2
, borderpad=0.3
, ncol=1
, markerfirst=True
, markerscale=1
, numpoints=1
, handlelength=3.5
,title="图例"
)
# plt.rcParams['savefig.dpi'] = 300 #图片像素
# plt.rcParams['figure.dpi'] = 300 #分辨率
plt.tight_layout()
plt.savefig("lig.png",dpi=300)
plt.show()
或者
1 | plt.subplot(211) |
使用matplotlib.pyplot实现画折线图的一个实用示例
添加中文
1 | import matplotlib.pyplot as plt |
一些中文字体的英文名
宋体 SimSun
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
新宋体 NSimSun
新细明体 PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋 FangSong
楷体 KaiTi
隶书:LiSu
幼圆:YouYuan
华文细黑:STXihei
华文楷体:STKaiti
华文宋体:STSong
华文中宋:STZhongsong
华文仿宋:STFangsong
方正舒体:FZShuTi
方正姚体:FZYaoti
华文彩云:STCaiyun
华文琥珀:STHupo
华文隶书:STLiti
华文行楷:STXingkai
华文新魏:STXinwei
Axes 列表
1 | import matplotlib.pyplot as plt |
实例
1 | import matplotlib.pyplot as plt |
添加箭头
Python学习笔记(4)——Matplotlib中的annotate(注解)的用法
1 | import matplotlib.pyplot as plt |