《利用python进行数据分析》读书笔记之matplotlib API入门


在使用matlotlib之前我们首先需要进行导入:

import matplotlib.pyplot as plt

我们可以试着生成一个简单的图形:

import matplotlib.pyplot as plt
import  numpy as np

data = np.arange(10)
# [0 1 2 3 4 5 6 7 8 9]
plt.plot(data)
plt.show()
#将画出的图形在pycharm中显示

简单的线性图

图片与子图

matplotlib所绘制的图片位于Figure对象中。可以使用plt.figure()生成一个续表的图片:

fig = plt.figure()
print(type(fig))
# <class 'matplotlib.figure.Figure'>

我们可以使用add_subplot创建一个或者多个子图:

ax1 = fig.add_subplot(2,2,1)
print(type(ax1))
# <class 'matplotlib.axes._subplots.AxesSubplot'>
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)

上面的代码的意思是2×2(最多四个图片)的,并且我们选择了四个图形中的第一个(序号从1开始)。如果你接着创建了两个子图,就会得到以下结果:
三个空白子图
matplotlib会在最后一个图片和子图上面进行绘制,我们接上以下代码:

plt.plot(np.random.randn(50).cumsum(),'k--')
plt.show()

就会得到以下结果:
单个子图绘制的数据可视化
其中’k–'是用于绘制折现的style(风格)选项。
另外我们还可以使用add_subplot返回的对象的plot方法在选定的子图上绘图:

ax1.hist(np.random.randn(100),bins = 20,color = 'k',alpha = 0.3)
ax2.scatter(np.arange(30),np.arange(30)+3*np.random.randn(30))
plt.show()

得到的结果如下:
子图数据可视化
使用matplotlib中的subplots函数,可以返回一个figure对象和一个包含Axes Subplot对象的列表,使得我们可以快速的访问每个子图:

fig,axes = plt.subplots(2,3)
#创建一个含有2*3个的子图的图片
print(axes)
#一个二维数组,可以通过axes[0,1]这样的形式进行调用
# [[<matplotlib.axes._subplots.AxesSubplot object at 0x00000245D7051358>
#   <matplotlib.axes._subplots.AxesSubplot object at 0x00000245D73422E8>
#   <matplotlib.axes._subplots.AxesSubplot object at 0x00000245D736F518>]
#  [<matplotlib.axes._subplots.AxesSubplot object at 0x00000245D73969B0>
#   <matplotlib.axes._subplots.AxesSubplot object at 0x00000245D73BEF28>
#   <matplotlib.axes._subplots.AxesSubplot object at 0x00000245D73ED4E0>]]

以下是subplots函数的参数:

参数描述
nrows子图的行数
ncols子图的列数
sharex所有子图使用相同的x刻度(调整xlim会影响所有子图)
sharey所有子图使用相同的y刻度(调整ylim会影响所有子图)
subplot_kw传入add_subplot的关键字参照字典,用于生成子图
**fig_kw在生成图片时使用额外的关键字参数,例如plt.subplots(2,2,figsize = (8,6))

颜色、标记和线类型

matplotlib的主函数plot接受带有x和y轴的数组以及一些可选的字符串缩写参数来指明颜色和线类型。例如,要用绿色破折号绘制x对y的线,你需要执行:

ax.plot(x,y,'g--')

我们也可以显示的指定线类型和颜色:

ax.plot(x,y,linestyle = '--',color = 'g')

有很多颜色缩写被用于常用颜色,也可以使用十六进制颜色代码的方式指定任何颜色(如#CECECE)
我们可以使用marker参数来凸显出每个数据点:

ax.plot(x,y,linestyle = '--',color = 'g',marker = 'o')

可以使用drawstyle选项来更改线条的风格:

data = np.random.randn(30).cumsum()
plt.plot(data,'k--',label = 'Default',marker = 'o')
plt.plot(data,'k--',drawstyle = 'steps-post',label = 'steps-post',marker = 'o')
plt.show()

效果如下:
不同风格的线

刻度、标签和图例

可以使用pyplot中xlim、xticks和xticklabels方法来控制绘图范围、刻度位置以及刻度标签。
对于xlim方法有以下两点需要注意:

  • 在没有函数参数的情况下使用,返回的是当前的x轴绘图范围
  • 在传入参数(如xlim([0,10])),将会按输入的值设置x轴绘图范围
    所有的这些方法都会在当前活动的或者最近创建的AxesSubplot上生效。

设置标题、轴标签、刻度和刻度标签

先考虑以下代码绘制的图片:

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(np.random.randn(1000).cumsum())

结果如下:
随机漫步
改变x轴的刻度,可以使用set_xticks和set_xticklabels。set_xticks表示在数据范围内设定刻度的位置。可以使用set_xticklabels为标签幅值:

ticks = ax.set_xticks([0,250,500,720,1000])
#标签的位置
labels = ax.set_xticklabels(['one','two','three','four','five'],
                            rotation = 30,fontsize = 'small')
#rotation为将标签旋转指定的角度
ax.set_xlabel('Stages')
#设置x轴的标题

结果如下:
漫步

添加图例

有多种方式可以添加图例,最简单的方法是在画图时传递label参数,之后使用legend方法来显示图例:

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.plot(np.random.randn(1000).cumsum(),'k',label='one')
ax.plot(np.random.randn(1000).cumsum(),'k--',label='two')
ax.plot(np.random.randn(1000).cumsum(),'k.',label='three')
ax.legend(loc='best')

效果如下:
添加图例

将图片保存到文件

可以使用figure对象方法或者plt中自带的函数来将绘制好的图片进行保存:

ax.savefig('my_img1.png')
plt.savefig('my_img2.png')

savefig的常用选项:

参数描述
fname包含文件路径或者python文件型对象的字符串。图片格式由文件扩展名确定
dpi每英寸点数的分辨率,默认为100,但是可以配置
facecolor ,edgecolor子图之外的图形的背景颜色;默认情况下是白色(‘w’)
format显式指定文件格式
bbox_inches要保存的图片范围,如果传递’tight’则将会去除掉图片周围空白的部分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值