奇迹969

 

画图基础

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

 

posted on 2022-09-08 19:38  奇迹969  阅读(24)  评论(0编辑  收藏  举报

导航