Python画图库Matplotlib教程(二)

it2023-05-31  73

进阶教程

scatter散点图bar柱状图contour等高线Image图片3D数据 首先定义头文件

import matplotlib.pyplot as plt import numpy as np

scatter散点图

n = 1024 # 随机生成n个数 X = np.random.normal(0, 1, n) Y = np.random.normal(0, 1, n) T = np.arctan2(Y, X) plt.scatter(X, Y, s=75, c=T, alpha=0.5) #设置轴的范围 plt.xlim(-1.5, 1.5) plt.ylim(-1.5, 1.5) plt.xticks(()) # ignore xticks plt.yticks(()) # ignore yticks plt.show()

bar柱状图

n = 12 # [0, 1, 2 …… n] X = np.arange(n) # 0.5 到 1 均匀分布 Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n) Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n) plt.xlim(-.5, n) plt.xticks(()) plt.ylim(-1.25, 1.25) plt.yticks(()) # 设置颜色 plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='black') plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='black') # 设置下标 for x, y in zip(X, Y1): # ha: horizontal alignment # va: vertical alignment plt.text(x, y + 0.05, '%.2f' % y, ha='center', va='bottom') for x, y in zip(X, Y2): # ha: horizontal alignment # va: vertical alignment plt.text(x, -y - 0.05, '%.2f' % -y, ha='center', va='top') plt.show()

contour等高线

def f(x,y): # the height function return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2) n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) # 定义网格 X,Y = np.meshgrid(x, y) # 根据高度分区,分成8 + 2份 cmap(color map)hot暖色 cool冷色 plt.contourf(X, Y, f(X, Y), 8, alpha=0.75, cmap=plt.cm.cool) # 画等高线 C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidths=.5) # inline : label在线中 plt.clabel(C, inline=True, fontsize=10) plt.xticks(()) plt.yticks(()) plt.show()

Image图片

# image data a = np.array([0.313660827978, 0.365348418405, 0.423733120134, 0.365348418405, 0.439599930621, 0.525083754405, 0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3) #interpolation 显示状态 camp 颜色 plt.imshow(a, interpolation='nearest', cmap='bone', origin='lower') # 左方颜色条长度 plt.colorbar(shrink=0.9) plt.xticks(()) plt.yticks(()) plt.show()

3D数据

import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) # X, Y value X = np.arange(-4, 4, 0.25) Y = np.arange(-4, 4, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X ** 2 + Y ** 2) # height value Z = np.sin(R) # 3D图像 rstride cstride:行列跨度 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow')) # 等高线 # zdir表示投影的平面,offset位置 ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow')) # 设z高度范围 ax.set_zlim(-2, 2) plt.show()

最新回复(0)