1)常见图形
plt.plot(x, y)
plt.bar(x, y)
plt.barh(x, y)
plt.boxplot(x)
plt.scatter(x,y)
2)误差条形图
x = np.arange(0, 10, 1)
y = np.log(x)
xe = 0.1 * np.abs(np.random.randn(len(y)))
#width设置条形度的宽度
plt.bar(x, y, yerr=xe, width=0.4, align='center', ecolor='r', color='cyan',label='experiment #1');
plt.xlabel('# measurement')
plt.ylabel('Measured values')
plt.title('Measurements')
plt.legend(loc='upper left')
plt.show()
3)饼图
#饼图是个圆形,最好放在一个正方形的画板中
plt.figure(1, figsize=(8, 8))
labels = 'Spring', 'Summer', 'Autumn', 'Winter'
values = [15, 16, 16, 28]
explode =[0.1, 0.1, 0.1, 0.1]
#explode设置的是扇形和扇形间的间隔,labels设置每个扇形的标签,startangle=67设置起始角度从67度开始
plt.pie(values, explode=explode, labels=labels, autopct='%1.1f%%', startangle=67)
plt.title('Rainy days by season')
plt.show()
4)等高线的绘制
#等高线图
import matplotlib as mpl
#定义高程
def process_signals(x, y):
return (1 - (x ** 2 + y ** 2)) * np.exp(-y ** 3 / 3)
x = np.arange(-1.5, 1.5, 0.1)
y = np.arange(-1.5, 1.5, 0.1)
# 将原始数据变为网格数据
X, Y = np.meshgrid(x, y)
Z = process_signals(X, Y)
#指定等高线,等高线间隔0.3
N = np.arange(-1, 1.5, 0.3)
# cmap=mpl.cm.jet指定等高线颜色,linewidths指定等高线宽
CS = plt.contour(Z, N, linewidths=2, cmap=mpl.cm.jet)
plt.clabel(CS, inline=True, fmt='%1.1f', fontsize=10)
plt.colorbar(CS)
plt.title('My function: $z=(1-x^2+y^2) e^{-(y^3)/3}$')
plt.show()
# 计算高程
def calcu_elevation(x1, y1):
ele = (1-x1/2+x1**5+y1**3)*np.exp(-x1**2-y1**2)
return ele
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
# 将原始数据变为网格数据
X, Y = np.meshgrid(x, y)
# 填充等高线的颜色, 8是等高线分为几部分
plt.contourf(X, Y, calcu_elevation(X, Y), 8, alpha=0.75, cmap=plt.cm.hot) # 8表示要分几部分等高线
# 画等高线
C = plt.contour(X, Y, calcu_elevation(X, Y), 8, colors='black', linewidth=0.5)
plt.clabel(C, inline=True, fontsize=10) # 添加文字标签 inlins表示等高线是穿过数字还是不穿过
plt.show()
5)3D柱形图
import matplotlib.dates as mdates
from mpl_toolkits.mplot3d import Axes3D
#设置全局字体大小
mpl.rcParams['font.size'] = 10
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for z in [2011, 2012, 2013, 2014]:
xs = xrange(1,13)
ys = 1000 * np.random.rand(12)
#颜色方案的随机选择
color = plt.cm.Set2(random.choice(xrange(plt.cm.Set2.N)))
# zdir='y'或者’x’
ax.bar(xs, ys, zs=z, zdir='y', color=color, alpha=0.8)
ax.xaxis.set_major_locator(mpl.ticker.FixedLocator(xs))
ax.yaxis.set_major_locator(mpl.ticker.FixedLocator(ys))
ax.set_xlabel('Month')
ax.set_ylabel('Year')
ax.set_zlabel('Sales Net [usd]')
plt.show()