#导入matplotil库,用于画图 import matplotlib.pyplot as plt #导入numpy库,用于数据处理 import numpy as np #画图 data = np.arange(10) plt.plot(data) #使图像展现出来 plt.show()
上面的代码展现了最简单的图片绘制。总结起来有一下几个步骤:html
data = np.arange(10)
生成从0-9的整数。plt.show()
,在PyCharm中不会自动弹出绘制出来的图形,须要在PyCharm界面的最右侧点击‘Sciview’按钮进行查看。另在,若是是在Jupyter中绘图,须要加入代码matplotlib notebook
,若是是在Ipython中运行,则须要加入代码matplotlib
。上述代码的执行效果以下所示。python
#导入matplotil库,用于画图 import matplotlib.pyplot as plt #导入numpy库,用于数据处理 import numpy as np #画图 data = np.arange(10) #第一种生成子图的方式 fig = plt.figure() #生成一个图片对象 #将fig划分红2行2列4个子图 ,a1表示第1个子图,对应subplot的三个参数。 a1 = fig.add_subplot(2,2,1) #在生成两个子图 a2 = fig.add_subplot(2,2,2) a3 = fig.add_subplot(2,2,3) #绘图 plt.plot(np.random.randn(50).cumsum(),'k--') _ = a1.hist(np.random.randn(100),bins=20,color = 'k',alpha=0.3) a2.scatter(np.arange(30),np.arange(30)+2*np.random.randn(30)) #第二种生成子图的方式。 #生成2行3列的子图,sharex表示全部子图横坐标范围相同 fig,axs = plt.subplots(2,3,sharex=True) #对在第1行第2列的子图进行绘制 axs[0,1].hist(np.random.randn(100),bins=20,color = 'k',alpha=0.3) #使图像展现出来 plt.show()
经常使用的生成子图的方式有两种。git
对于第一种,先生成一个图片对象,而后在图片对象中添加子图。以后在自图上进行绘制。这里注意,若是直接执行plt.plot
,默认是在最后生成的一张子图上进行绘制。好比本例中使用plt.plot(np.random.randn(50).cumsum(),'k--')
绘制的图出如今了第子图中。‘k--’线条的一些属性,在下一节具体列出。也能够经过'子图名称.XXX'的方法来具体指定在哪一个子图中绘制。如本例中使用a1.hist()
命令在a1中绘制了柱状图。常见的图片类型见下表,更丰富的指令请参见官方文档。地址请点我!github
关键词 | 图片种类 |
---|---|
angle_spectrum | 角度光谱 |
bar | 条形图 |
barh | 水平条图 |
hist | 直方图 |
hist2d | 2D直方图 |
phase_spectrum | 相位频谱 |
pie | 饼图 |
ploar | 极性图 |
psd | 功率光谱密度 |
scatter | 散点图 |
specgram | 光谱图 |
stackplot | 堆叠区域图 |
step | 步骤图 |
第一种的图片效果以下所示;api
axs[0,1]
的方式进行指定,[0,1]参数表示第一行第二列的子图(行和列的计数从零开始)。效果以下所示。plt.subplots_adjust()
函数来调整子图间距。#导入matplotil库,用于画图 import matplotlib.pyplot as plt #导入numpy库,用于数据处理 import numpy as np from numpy.random import randn #画图 data = np.random.randn(30).cumsum() plt.plot(data,color='k', linestyle='dashed', marker='o', label='One') plt.plot(data,'r-', drawstyle='steps-post', label='Two') #生成图例 plt.legend(loc='best') plt.show()
上面的代码中有两个plt.plot,因此能够在同一个图中绘制两条不一样的线。iview
效果以下所示:dom
# 导入matplotil库,用于画图 import matplotlib.pyplot as plt # 导入numpy库,用于数据处理 import numpy as np from numpy.random import randn # 画图 fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.plot(np.random.randn(1000).cumsum()) # 设置x轴上,哪些坐标处须要加刻度 ticks = ax.set_xticks([0, 250, 500, 750, 1000]) # 设置刻度的内容 labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'], rotation=45, fontsize='small') # 设置横坐标的名称 ax.set_xlabel('Stages') plt.show()
效果以下所示。函数
# 导入matplotil库,用于画图 import matplotlib.pyplot as plt # 导入numpy库,用于数据处理 import numpy as np from numpy.random import randn from datetime import datetime import pandas as pd fig = plt.figure() ax = fig.add_subplot(1, 1, 1) data = pd.read_csv('C:/Users/Nighthink/Downloads/pydata-book/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')
效果以下所示:post
执行代码plt.savegif('fig.png',dpi=400,bbox_inches='tight')
能够将图保存成png格式,文件名是fig,dpi参数表示每英寸点数的分辨率,bbox_inches参数能够用来控制实际图像四周的空白。spa