小结:
- 注意Anaconda prompt启动项 (小心!)
- 简单画图
- 颜色,标记和线型
- 设置标题,轴标签,刻度以及刻度标签
- 一张图中包含多个函数,label 参数
1. 注意Anaconda prompt启动项
ipython --pylab
如果你仅用ipython启动,将会在google/stack overflow耗费两三小时排查“为啥show不了两次图片” ,试遍以下方法都是得个吉。终于在看源码前发现启动项不一样...
https://stackoverflow.com/questions/5524858/matplotlib-show-doesnt-work-twice
2. 简单画图
- 创建subplot画格子图
import numpy as np
import pandas as pd
from pandas import DataFrame,Series
import matplotlib.pyplot as plt
# 生成四个格子subplot
In [23]: fig = plt.figure()
In [24]: ax4 = fig.add_subplot(2,2,4)
In [25]: ax3 = fig.add_subplot(2,2,3)
In [26]: ax2 = fig.add_subplot(2,2,2)
In [27]: ax1 = fig.add_subplot(2,2,1)
# 选中格子生成图片
In [29]: ax4.plot([1.5,3.5,-2,1.6])
Out[29]: [<matplotlib.lines.Line2D at 0x27b1331710>]
In [30]: _ = ax1.hist(randn(100),bins=20,color='k',alpha=0.3)
In [31]: ax2.scatter(np.arange(30),np.arange(30) + 3 * randn(30))
Out[31]: <matplotlib.collections.PathCollection at 0x27b19872e8>
In [32]: ax3.plot(randn(50).cumsum(),'k--')
Out[32]: [<matplotlib.lines.Line2D at 0x27b199e3c8>]

- subplots生成多个格子,再挑选作图。
这种生成方式的格子坐标有点像二维数组
# 生成多个subplots
In [35]: fig, axes = plt.subplots(2,3)
In [36]: axes
Out[36]:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x00000027B46BD518>,
<matplotlib.axes._subplots.AxesSubplot object at 0x00000027B478FEB8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x00000027B48979B0>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x00000027B48D36D8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x00000027B4910208>,
<matplotlib.axes._subplots.AxesSubplot object at 0x00000027B4949828>]],
dtype=object)
In [38]: axes[0,1].plot([1.5,3.5,-2,1.6])
Out[38]: [<matplotlib.lines.Line2D at 0x27b50fc9e8>]

- 共享坐标
In [41]: for i in range(2):
...: for j in range(2):
...: axes[i,j].hist(randn(500),bins=50,color='k',alpha=0.5)
...: plt.subplots_adjust(wspace=0 , hspace = 0)
...:

3. 颜色,标记和线型
- 颜色和线型
In [48]: plt.plot(x,y,'g--')
Out[48]: [<matplotlib.lines.Line2D at 0x27b400e278>]
In [49]: plt.plot(x,y,linestyle = '--',color = 'g')
Out[49]: [<matplotlib.lines.Line2D at 0x27b5299128>]

- 标记
In [53]: plt.plot(randn(30).cumsum(),'ko--')
Out[53]: [<matplotlib.lines.Line2D at 0x27b19a89e8>]
In [54]: plt.plot(randn(30).cumsum(),'g+--')
Out[54]: [<matplotlib.lines.Line2D at 0x27b08bb588>]

4. 设置标题,轴标签,刻度以及刻度标签
基本就是set后面看看选项,x轴和y轴基本可以按着选。

5. 一张图中包含多个函数,label 参数
In [61]: ax = plt.figure().add_subplot(1,1,1)
In [62]: ax.plot(randn(1000).cumsum(),'k',label='one')
Out[62]: [<matplotlib.lines.Line2D at 0x27b5389d68>]
In [63]: ax.plot(randn(1000).cumsum(),'g--',label='two')
Out[63]: [<matplotlib.lines.Line2D at 0x27b53929e8>]
In [66]: ax.plot(randn(1000).cumsum(),'r.',label='three')
Out[66]: [<matplotlib.lines.Line2D at 0x27b53afd68>]
In [67]: ax.legend(loc = 'best')
Out[67]: <matplotlib.legend.Legend at 0x27b525d550>

2018.8.14
学到《用python进行数据分析》的 P214
理智上是知道python3.7已经出来了,现实是anaconda升级stream有点麻烦..
网友评论