matplotlib中绘图

 
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()

 

原文地址:https://www.cnblogs.com/yongfuxue/p/10107329.html