查看“Matplotlib”的源代码
←
Matplotlib
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
* ''' ipython中事先执行 %matplotlib ''' :交互式模式:plt.ion() :关闭交互式:plt.ioff() * 参见 [https://matplotlib.org/index.html] [http://www.cnblogs.com/wei-li/archive/2012/05/23/2506940.html] ==配置== ===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.pyplot as plt plt.clf() 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(loc='upper left') #图例 显示前面plot中的label plt.show() * use keyword args lines = plt.plot(x, y) plt.setp(lines, color='r', linewidth=2.0) #[https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D] * 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 [https://matplotlib.org/api/markers_api.html] ====多个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() #这个是重新排列的神器 ==字体大小设置== *plt.tick_params(labelsize=23) #设置图的坐标轴的字体大小 * label的字体大小,直接添加 ‘size=18’这样的关键词 ====latex字符==== plt.rc(usetex = True) plt.xlabel('\\alpha') #转义 参见[https://docs.python.org/2.0/ref/strings.html] 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() *'''ax也可以在互动模式中通过 plt.gca()获取''' ax=plt.gca() ====axes的配置==== :ax.semilogx : 对数坐标 :ax.grid :添加grid :ax.set_xlim(xmin=1,xmax=10) #设置坐标范围 :ax.xaxis.tick_top() #坐标轴的tick显示在图的上方 :ax.xaxis.set_label_position('top') #x坐标轴的label显示在图的上方,这一点似乎无法在交互式命令中简单实现 ==专题== ===直方图=== '''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 ** bins=np.arange(2,3,0.1) ** density=Ture #默认是False,如果是Trure相当于归一化 ** histtype: 可选{'bar', 'barstacked', 'step', 'stepfilled'}之一,默认为bar,推荐使用默认配置,step使用的是梯状,stepfilled则会对梯状内部进行填充,效果与bar类似 ** log: bool,默认False,即y坐标轴是否选择指数刻度 ** ls(linestyle),这是个通用参数 linestyle description '-' or 'solid' solid line '--' or 'dashed' dashed line '-.' or 'dashdot' dash-dotted line ':' or 'dotted' dotted line ** color,通用参数 *输出三个列表,前两个分别是直方图的数值和bin的取值,第三个patches啥意思不清楚 Freq, bins, patches = plt.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) ===contour图=== xx=np.arange(7,12,0.10) yy=np.arange(0.,3,0.05) X,Y=np.meshgrid(xx,yy) zdens=densxy(Spax_Ms[Lsel],Spax_RtoRe[Lsel],.10,0.05,xmin=7.,ymin=0.,nx=50,ny=60) # my own pro plt.contour(X,Y,zdens,[50,200,500],color='blue') plt.annotate('blue: high $\mu$ spaxels',(7.2,2.6),color='blue',size=20) contour不直接支持label和legend,要用legend,参见 [https://stackoverflow.com/questions/10490302/how-do-you-create-a-legend-for-a-contour-plot-in-matplotlib] ===patch=== matplotlib.patches.Ellipse *[[ellipse]] matplotlib.patches.Ellipse(xy, width, height, angle=0, **kwargs)[https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.patches.Ellipse.html] === 保存图片文件 === *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之前用压倒一切设置
返回至“
Matplotlib
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
社群首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息