更多实用基础技巧详见
# 1. plt.pie绘制扇形图
import matplotlib.pyplot as plt
%matplotlib inline
labels = 'frogs','hogs','dogs','logs'
sizes = 15,20,45,10
colors = 'yellowgreen','gold','lightskyblue','lightcoral'
explode = 0,0.1,0,0 # 模块间隙 # 开始角度
plt.pie(sizes,explode = explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50)
plt.axis('equal')
plt.show()
import matplotlib.pyplot as plt
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
# 2. plt.plot 绘制折线图
import numpy as np
import matplotlib.pyplot as plt
# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)
# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
# 3.plt.hist 绘制条形图 & 添加文字注释
import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 100, 15
# np.random.randn 函数返回一个或一组样本,具有标准正态分布。
x = mu + sigma * np.random.randn(10000)
# 数据的直方图
n, bins, patches = plt.hist(x, bins = 50, normed = 1, facecolor = 'g',edgecolor = 'b', alpha=0.75,
histtype = 'bar')
#hist的参数非常多,但常用的就这六个,只有第一个是必须的,后面四个可选
#arr: 需要计算直方图的一维数组
#bins: 直方图的柱数,可选项,默认为10
#normed: 是否将得到的直方图向量归一化。默认为0
#facecolor: 直方图颜色
#edgecolor: 直方图边框颜色
#alpha: 透明度
#histtype: 直方图类型,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’
plt.xlabel('Smarts') #xlable(), ylable()用于添加x轴和y轴标签
plt.ylabel('Probability')
plt.title('Histogram of IQ') #添加标题
plt.text(60, .025, r'$\mu=100,\ \sigma=15$') #图中的任意位置添加文字,并支持LaTex语法
plt.axis([40, 160, 0, 0.03]) # 设置坐标取值范围
plt.grid(True) # 是否显示格子
plt.show()
# 4.绘制散点图
y = np.random.standard_normal((600,2)) #表示随机生成一个标准正态分布形状是600*2的数组
plt.figure(figsize=(8,5)) #表示绘制图形的画板尺寸为8*5
plt.plot(y[:,0],y[:,1],'o') #表示绘制散点图,且为蓝色圆标记
c = np.random.randint(0,10,len(y)) #表示随机生成一个第三维度的数据集,取值在0-10之间的整数
plt.scatter(y[:,0],y[:,1],c=c,marker='o') #表示颜色数据来源于第三维度的c
plt.colorbar() #表示添加彩条
# 直方图拓展1:两个数据集的直方图
plt.figure(figsize=(8,5)) #表示绘图画板尺寸为8*5
plt.hist(y, bins=30, label=['1st','2nd']) #表示使用y绘制直方图,数据组数有30个,标签分别使用'1st'和'2nd';
plt.grid(True) # 表示添加网格
plt.legend(loc=0) # 表示最佳位置显示图例
plt.xlabel('Value') # 表示X轴标签为‘Value’
plt.ylabel('Frequency') # 表示Y轴标签为‘Frequency’
plt.title('Histogram') # 表示标题为‘Histogram’
# 直方图拓展2: 两个数据集堆叠的直方图
plt.hist(y, bins=20, label=['1st','2nd'],
color=['b','m'], #color=['b','m']表示颜色分别取蓝色、品红;
stacked=True, #参数stacked=True表示堆叠的直方图
rwidth=0.8) #rwidth=0.8表示修改条块的相对宽度为0.8
# *annotate()方法可以很方便地添加此类注释
import numpy as np
# 使用annotate()方法可以很方便地添加此类注释
# 要考虑两个点的坐标:被注释的地方 xy(x, y)和插入文本的地方xytext(x, y)。
import matplotlib.pyplot as plt
#ax = plt.subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.05),)
plt.ylim(-2,2)
plt.show()
# *plt.subplot 一张图中画多张子图
t = np.arange(0.0,2.0,0.1)
s = np.sin(t*np.pi)
plt.subplot(2,2,1) #要生成两行两列,这是第一个图 plt.subplot('行','列','编号')
plt.plot(t,s,'b--')
plt.ylabel('y1')
plt.subplot(2,2,2) #两行两列,这是第二个图
plt.plot(2*t,s,'r--')
plt.ylabel('y2')
plt.subplot(2,2,3)#两行两列,这是第三个图
plt.plot(3*t,s,'m--')
plt.subplot(2,2,4)#两行两列,这是第四个图
plt.plot(4*t,s,'k--')
plt.show()