“Matplotlib”的版本间差异
跳到导航
跳到搜索
(→简单plot) |
|||
第49行: | 第49行: | ||
*产生多个图形窗口 |
*产生多个图形窗口 |
||
plt.figure(1) |
plt.figure(1,figsize=(9, 3)) |
||
plt.figure(2) |
plt.figure(2) |
||
第55行: | 第55行: | ||
x = np.arange(0, 5, 0.1); |
x = np.arange(0, 5, 0.1); |
||
y = np.sin(x) |
y = np.sin(x) |
||
plt.subplot( |
plt.subplot(221) # panels |
||
plt.plot(x, y,label='sin') |
plt.plot(x, y,label='sin') |
||
lines = plt.plot(x, y) |
|||
# use keyword args |
|||
plt.setp(lines, color='r', linewidth=2.0) #[https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D] |
|||
plt.errorbar(x, y, xerr=0.1 * x, yerr=5.0 + 0.75 * y, ls='None', marker='s') #误差棒,ls='None' 表示不连线 |
plt.errorbar(x, y, xerr=0.1 * x, yerr=5.0 + 0.75 * y, ls='None', marker='s') #误差棒,ls='None' 表示不连线 |
||
plt.xlim(0,3) #调整坐标范围 |
plt.xlim(0,3) #调整坐标范围 或者用 plt.axis([40, 160, 0, 0.03])同时设定x和y轴的范围 |
||
plt.xscale(' |
plt.xscale('log') # 设置对数坐标格式,, |
||
plt.xlabel('x label') |
plt.xlabel('x label') |
||
plt.ylabel('y label') |
plt.ylabel('y label') |
||
第65行: | 第68行: | ||
plt.legend() #图例 显示前面plot中的label |
plt.legend() #图例 显示前面plot中的label |
||
plt.subplot(222) |
|||
plt.scatter(x, y) |
|||
plt.subplot(223) |
|||
plt.bar(x, y) |
|||
plt.suptitle('Categorical Plotting') |
|||
== coding style == |
== coding style == |
2019年5月7日 (二) 09:31的版本
- ipython中事先执行 %matplotlib
- 交互式模式:plt.ion()
- 关闭交互式:plt.ioff()
配置
pyplot的style配置
- 使用内置的style
plt.style.use('ggplot') print(plt.style.available) (当前使用的style)
- 可以自定义style
For example, you might want to create mpl_configdir/stylelib/presentation.mplstyle with the following:
axes.titlesize : 24 axes.labelsize : 20 lines.linewidth : 3 lines.markersize : 10 xtick.labelsize : 16 ytick.labelsize : 16
Then, when you want to adapt a plot designed for a paper to one that looks good in a presentation, you can just add:
>>> import matplotlib.pyplot as plt >>> plt.style.use('presentation')
matplotlib的配置
- 使用matplotlib.rcParams
mpl.rcParams['lines.linewidth'] = 2 mpl.rcParams['lines.color'] = 'r'
- matplotlib.rcdefaults() 恢复默认配置
- matplotlibrc file
matplotlib.matplotlib_fname()
简单plot
- import matplotlib.plot as plt
- 初始化 clear
plt.clf()
- 显示图像
plt.show()
- Tweak spacing to prevent clipping of ylabel
plt.tight_layout()
- plt.plot() 中的颜色,线型等
- options for the color characters are: 'r' , 'g' , 'b' = blue, 'c' = cyan, 'm' = magenta, 'y' = yellow, 'k' = black, 'w' = white
- Options for line styles are: '-' = solid, '--' = dashed, ':' = dotted, '-.' = dot-dashed, '.' = points, 'o' = filled circles, '^' = filled triangles
- marker style [3]
- 产生多个图形窗口
plt.figure(1,figsize=(9, 3)) plt.figure(2)
- 简单的例子
x = np.arange(0, 5, 0.1); y = np.sin(x) plt.subplot(221) # panels plt.plot(x, y,label='sin') lines = plt.plot(x, y) # use keyword args plt.setp(lines, color='r', linewidth=2.0) #[4] plt.errorbar(x, y, xerr=0.1 * x, yerr=5.0 + 0.75 * y, ls='None', marker='s') #误差棒,ls='None' 表示不连线 plt.xlim(0,3) #调整坐标范围 或者用 plt.axis([40, 160, 0, 0.03])同时设定x和y轴的范围 plt.xscale('log') # 设置对数坐标格式,, plt.xlabel('x label') plt.ylabel('y label') plt.title("Simple Plot") plt.legend() #图例 显示前面plot中的label
plt.subplot(222) plt.scatter(x, y)
plt.subplot(223) plt.bar(x, y) plt.suptitle('Categorical Plotting')
coding style
- 通过关键词来配置图的要素,例子
x = np.arange(0, 10, 0.2) y = np.sin(x) fig, ax = plt.subplots() ax.plot(x, y) plt.show()
- axes的配置
- ax.semilogx : 对数坐标
- ax.grid :添加grid
- ax.set_xlim(xmin=1,xmax=10) #设置坐标范围
- ax也可以通过 plt.gca()获取
专题
直方图
- plt.hist() 命令
- 关键词有 bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None
- coding style
n, bins, patches = ax.hist(x, 50, normed=1)
图像
- imshow()
delta = 0.025 x = y = np.arange(-3.0, 3.0, delta) X, Y = np.meshgrid(x, y) Z = np.exp(-X**2 - Y**2) fig, ax = plt.subplots() im = ax.imshow(Z, interpolation='bilinear', cmap=cm.RdYlGn, origin='lower', extent=[-3, 3, -3, 3], vmax=abs(Z).max(), vmin=-abs(Z).max()) #lower 就是把index[0,0]放在左下,extent是数轴上标志的范围 plt.imshow(Z)
保存图片文件
- plt.savefig("filename.png")
- plt.savefig('SFH_LMC_miles.pdf',format='pdf')
- 保存文件一片空白
- 在 plt.show() 后调用了 plt.savefig() ,在 plt.show() 后实际上已经创建了一个新的空白的图片(坐标轴),这时候你再 plt.savefig() 就会保存这个新生成的空白图片。
- plt.show() 放在最后,或者
# gcf: Get Current Figure fig = plt.gcf() plt.show() fig1.savefig('tessstttyyy.png', dpi=100)
- matplotlib.use('PS') # generate postscript output by default #在importing matplotlib.pyplot之前用压倒一切设置