画图基础
import matplotlib.pyplot as plt import random from pylab import mpl # 设置显示中文字体 mpl.rcParams["font.sans-serif"] = ["SimHei"] x =range(60) y_shanghai = [random.uniform(15,18) for i in x] plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y_shanghai) x_ticks_label = ["11点{}分".format(i) for i in x] # 构造y轴刻度 y_ticks = range(40) # 修改x,y轴坐标的刻度显示 plt.xticks(x[::5], x_ticks_label[::5]) plt.yticks(y_ticks[::5]) plt.xlabel("时间") plt.ylabel("温度") plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20) plt.grid(True, linestyle="--", alpha=0.5) plt.show()
3d
import matplotlib.pyplot as plt # 绘图用的模块 from mpl_toolkits.mplot3d import Axes3D # 绘制3D坐标的函数 import numpy as np def fun(x, y): return np.power(x, 2) + np.power(y, 2) fig1 = plt.figure(dpi=100) # 创建一个绘图对象 ax = Axes3D(fig1) # 用这个绘图对象创建一个Axes对象(有3D坐标) X, Y = np.mgrid[-2:2:40j, -10:10:40j] # 从-2到2分别生成40个取样坐标,并作满射联合 Z = fun(X, Y) # 用取样点横纵坐标去求取样点Z坐标 plt.title("3D") # 总标题 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.coolwarm, alpha=0.5) # 用取样点(x,y,z)去构建曲面 ax.set_xlabel('x label', color='r') ax.set_ylabel('y label', color='g') ax.set_zlabel('z label', color='b') # 给三个坐标轴注明 plt.show() # 显示模块中的所有绘图对象
from mpl_toolkits.mplot3d import Axes3D # 定义figure fig=plt.figure() # 创建3d图形的两种方式 # 将figure变为3d ax=Axes3D(fig) #ax = fig.add_subplot(111, projection='3d') # 定义x, y 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) # 计算Z轴的高度 Z=np.sin(R) # 绘制3D曲面 # rstride:行之间的跨度 cstride:列之间的跨度 # rcount:设置间隔个数,默认50个,ccount:列的间隔个数 不能与上面两个参数同时出现 # cmap是颜色映射表 # from matplotlib import cm # ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = cm.coolwarm) # cmap = "rainbow" 亦可 # 我的理解的 改变cmap参数可以控制三维曲面的颜色组合, 一般我们见到的三维曲面就是 rainbow 的 # 你也可以修改 rainbow 为 coolwarm, 验证我的结论 ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow')) # 绘制从3D曲面到底部的投影,zdir 可选 'z'|'x'|'y'| 分别表示投影到z,x,y平面 # zdir = 'z', offset = -2 表示投影到z = -2上 ax.contour(X,Y,Z,zdir='z',offset=-2,cmap=plt.get_cmap('rainbow')) # 设置z轴的维度,x,y类似 ax.set_zlim(-2,2) plt.show()