前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matplotlib库

Matplotlib库

作者头像
爱编程的小明
发布2022-09-05 19:37:39
6990
发布2022-09-05 19:37:39
举报
文章被收录于专栏:小明的博客

matplotlib is a desktop plotting package designed for creating (mostly twodimensional) publication-quality plots. The project was started by John Hunter in 2002 to enable a MATLAB-like plotting interface in Python. Over time, matplotlib has spawned a number of add-on toolkits for data visualization that use matplotlib for their underlying plotting. One of these is seaborn

中文pdf

plot创建

在matplotlib中,所有plot都存在与Figure对象中,需要先利用matplotlib.pyplot.Figure()创建一个实例(记为fig),实例的方法有:

  • fig.add_subplot(m,n,i):创建子图,该方法返回一个AxesSubplot对象,可以通过调用该对象的实例方法直接在第i个子图上操作,比如(ax1=fig.add_subplot(m,n,i),ax1.plot())
  • 使用plt.plot命令时,默认在最后一幅图的的最后一个subplot上进行
  • 在计算每个单元格之后,图形将被重置,所以对于更复杂的图形,必须将所有的绘图命令放在一个笔记本单元格中。

对于上述操作,plt.subplots(m,n)提供了一种更为简洁的创造方式,该函数会返回创建的fig对象和axes数组(m*n型)。

调节子图距离

figure里的子图的间隔是会自己调整的,如果需要对这个间隔进行人为调整可以借助plt.subplots_adjust()方法,可以在Figure对象上使用subplots_adjust方法来改变间隔,也可以作为顶级函数使用: matplotlib.pyplot.subplots_adjust (left=None, bottom=None, right=None, top=None,wspace=None, hspace=None) wspace和hspace调整的是子图间隔占整个figure对象的百分比大小

代码语言:javascript
复制
fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):
    for j in range(2):
        axes[i, j].hist(np.random.randn(500), bins=50, alpha=0.5)
plt.subplots_adjust(wspace=0, hspace=0)

plot绘制

线型格式调节

plot函数进行根据传入的点坐标进行绘图,提供了一系列可选参数对绘制图像的颜色和线型等进行调节,输入参数有:

  • 可以直接输入一个参数对线型和颜色进行约束(‘ko–’)
    • color
    • linestyle
    • marker
  • drawstyle:点的连接方式
  • label

图例

plt.label/ax.legend用来创建图例,每一个曲线的label可以在plot函数调用时进行指明

  • loc:调节图例显示位置

plot decoration

装饰有两种方法,一种是利用pyplot接口,一种是调用matplotlib的api(更native) 为了交互的方便,pyplot接口是由很多方法组成的,通过这些方法可以对图像进行装饰(轴标签,范围,轴的位置),在调用这些方法时,如果没有参数输入会返回要调整的参数值,如果有参数输入就会对对应的参数进行调整.直接使用pyplot调用这些参数时会默认创建最近创建或者活跃的axessubplot

  1. pyplot interface
  • pyplot.xlim()
  1. 调用api
  • ax.set_xticks
  • ax.set_xticklabels
  • ax.set_title
  • ax.set_xlabel

The axes class has a set method that allows batch setting of plot properties:

代码语言:javascript
复制
props = {
'title': 'My first matplotlib plot',
'xlabel': 'Stages'
}
ax.set(**props)

添加注释

plot注释一般由箭头、文本和其它组成,我们可以利用text,arrow,annotate函数来添加plot annotations.(annotate=text+arrow)

代码语言:javascript
复制
from datetime import datetime
import pandas as pd
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

data = pd.read_csv('examples/spx.csv', index_col=0, parse_dates=True)
spx = data['SPX']

spx.plot(ax=ax, style='k-')

crisis_data = [
    (datetime(2007, 10, 11), 'Peak of bull market'),
    (datetime(2008, 3, 12), 'Bear Stearns Fails'),
    (datetime(2008, 9, 15), 'Lehman Bankruptcy')
]

for date, label in crisis_data:
    ax.annotate(label, xy=(date, spx.asof(date) + 75),
                xytext=(date, spx.asof(date) + 225),
                arrowprops=dict(facecolor='black', headwidth=4, width=2,
                                headlength=4),
                horizontalalignment='left', verticalalignment='top')

# Zoom in on 2007-2010
ax.set_xlim(['1/1/2007', '1/1/2011'])
ax.set_ylim([600, 1800])

ax.set_title('Important dates in the 2008-2009 financial crisis')

绘制图案(draw a shape on plot)

matplotlib有好多对象用来代表常见的形状,每一个形状又叫做patch。一些简单的图形比如长方形(Rectangle)和(Circle)可以在plt里找到,全部的特殊图形则可以在matplotlib.patches里找到。

代码语言:javascript
复制
fig = plt.figure(figsize=(12, 6)); ax = fig.add_subplot(1, 1, 1)
rect = plt.Rectangle((0.2, 0.75), 0.4, 0.15, color='k', alpha=0.3)
circ = plt.Circle((0.7, 0.2), 0.15, color='b', alpha=0.3)
pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]],
                   color='g', alpha=0.5)
ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)

If you look at the implementation of many familiar plot types, you will see that they are assembled from patches.

保存

保存图窗为文件有两种方法,一种是借助plt.savefig()函数,一种是调用Figure对象的savefig方法。除了将文件写入磁盘以外,也可以写入到任何类文件的对象。

全局配置

出于出版需要,我们可能会对所有的figure对象进行配置,这个时候可以选择使用plt.rc()方法,第一个参数输入期望自定义的变量,第二个参数输入希望调整为的值(根据调整变量的情况选择合适的数据类型即可)

代码语言:javascript
复制
plt.rc('figure', figsize=(10, 10))
font_options = {'family' : 'monospace',
                'weight' : 'bold',
                'size'   : 'small'}
plt.rc('font', **font_options)

等高线绘制

contour([X, Y,] Z, [levels], **kwargs) X, Y : array-like, optional。Z中值的坐标。X和Y必须都是二维的,形状与Z相同(例如,通过numpy.meshgrid创建),或者它们必须都是一维的,这样len(X) = M是Z中的列数,len(Y) = N是Z中的行数。如果没有给出,则假设它们是整数索引,即X = range(M), Y = range(N)。 Z : array-like(N, M)绘制轮廓的高度值 levels : int or array-like, optional。 确定轮廓线/区域的数量和位置 colors : color string or sequence of colors, optional 适用于轮廓线与轮廓区域 linestyles : {None, ‘solid’, ‘dashed’, ‘dashdot’, ‘dotted’}, optional 仅适用于轮廓线,线条样式可以是指定要使用的一组线条样式的字符串的可迭代对象。如果这个可迭代对象小于轮廓层数,它将在必要时重复。 linewidths : float or array-like, default: rcParams[“contour.linewidth”] (default: None) 仅适用于轮廓线等高线的线宽。 如果是一个数字,所有的轮廓线都将用这个线宽绘制。 如果是序列,则按升序绘制级别,并按指定的顺序绘制线宽。 如果没有,则返回到 rcParams[“lines.linewidth”]

分类图绘制

pcolormesh([X, Y,] C, **kwargs)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • plot创建
    • 调节子图距离
    • plot绘制
      • 线型格式调节
        • 图例
          • plot decoration
            • 添加注释
            • 绘制图案(draw a shape on plot)
            • 保存
          • 全局配置
            • 等高线绘制
              • 分类图绘制
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档