“Matplotlib”的版本间差异
		
		
		
		
		
		跳到导航
		跳到搜索
		
				
		
		
	
 (→直方图)  | 
				无编辑摘要  | 
				||
| 第34行: | 第34行: | ||
 matplotlib.matplotlib_fname()  | 
   matplotlib.matplotlib_fname()  | 
||
==两种不同的画图模式==  | 
|||
==  | 
  ===交互式plot===  | 
||
*'''import matplotlib.plot as plt'''  | 
  *'''import matplotlib.plot as plt'''  | 
||
*初始化 clear  | 
  *初始化 clear  | 
||
| 第61行: | 第62行: | ||
 plt.tight_layout()  | 
   plt.tight_layout()  | 
||
===多个panel===  | 
  ====多个panel====  | 
||
  plt.subplot(211) # panels  | 
    plt.subplot(211) # panels  | 
||
  plt.subplots_adjust(hspace=0.3) #调整多个panel的间隔  | 
    plt.subplots_adjust(hspace=0.3) #调整多个panel的间隔  | 
||
| 第69行: | 第70行: | ||
  plt.tight_layout() #这个是重新排列的神器  | 
    plt.tight_layout() #这个是重新排列的神器  | 
||
===latex字符===  | 
  ====latex字符=====  | 
||
 plt.rc(usetex = True)  | 
   plt.rc(usetex = True)  | 
||
 plt.xlabel('\\alpha') #转义 参见[https://docs.python.org/2.0/ref/strings.html]  | 
   plt.xlabel('\\alpha') #转义 参见[https://docs.python.org/2.0/ref/strings.html]  | 
||
| 第75行: | 第76行: | ||
== coding style ==  | 
  == coding style ==  | 
||
*通过关键词来配置图的要素,  | 
  *通过关键词来配置图的要素,功能更强大,但是直观性稍弱  | 
||
 x = np.arange(0, 10, 0.2)  | 
   x = np.arange(0, 10, 0.2)  | 
||
 y = np.sin(x)  | 
   y = np.sin(x)  | 
||
| 第81行: | 第83行: | ||
 ax.plot(x, y)  | 
   ax.plot(x, y)  | 
||
 plt.show()  | 
   plt.show()  | 
||
*axes的配置  | 
  *axes的配置  | 
||
:ax.semilogx  : 对数坐标  | 
  :ax.semilogx  : 对数坐标  | 
||
:ax.grid :添加grid  | 
  :ax.grid :添加grid  | 
||
:ax.set_xlim(xmin=1,xmax=10) #设置坐标范围  | 
  :ax.set_xlim(xmin=1,xmax=10) #设置坐标范围  | 
||
*ax也可以通过 plt.gca()获取  | 
  *'''ax也可以通过 plt.gca()获取'''这样可以在交互式中插入coding style的一些配置  | 
||
:比如配置坐标轴显示在图的上方  | 
|||
 ax=plt.gca()  | 
|||
 ax.xaxis.tick_top()  | 
|||
 ax.xaxis.set_label_position('top')   | 
|||
==专题==  | 
  ==专题==  | 
||
2020年1月26日 (日) 06:55的版本
- 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()
- 简单的例子
 
plt.figure(1,figsize=(9, 3))
plt.plot(x, y,label='sin') 
plt.errorbar(x, y, xerr=0.1 * x, yerr=5.0 + 0.75 * y, ls='None', marker='s',uplims=True) #误差棒,ls='None' 表示不连线 
plt.xlim(0,3)  #调整坐标范围 或者用 plt.axis([40, 160, 0, 0.03])同时设定x和y轴的范围
plt.xscale('log') # 设置对数坐标格式,,
plt.xlabel('x label')
plt.title("Simple Plot")
plt.legend() #图例  显示前面plot中的label
- use keyword args
 
lines = plt.plot(x, y) plt.setp(lines, color='r', linewidth=2.0) #[3]
- 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 [4]
 
- Tweak spacing to prevent clipping of ylabel
 
plt.tight_layout()
多个panel
 plt.subplot(211) # panels
 plt.subplots_adjust(hspace=0.3) #调整多个panel的间隔
 plt.subplot(212)
 plt.scatter(x, y) 
 plt.subtitle('Categorical Plotting')
 plt.tight_layout() #这个是重新排列的神器
latex字符=
plt.rc(usetex = True)
plt.xlabel('\\alpha') #转义 参见[5]
plt.xlabel(r'\alpha') #r'代表raw string
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()获取这样可以在交互式中插入coding style的一些配置
 
- 比如配置坐标轴显示在图的上方
 
ax=plt.gca()
ax.xaxis.tick_top()
ax.xaxis.set_label_position('top') 
专题
直方图
- 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
 
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)
Zm = np.ma.masked_where(Z > 1.2, Z) #mask image
plt.imshow(Zm)
patch
matplotlib.patches.Ellipse
保存图片文件
- 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之前用压倒一切设置