import matplotlib.pyplot as plt
import numpy as np
import csv
from mpl_toolkits.mplot3d import Axes3D
#定义坐标轴
fig = plt.figure()
ax4 = plt.axes(projection='3d')
#ax = fig.add_subplot(111,projection='3d') #这种方法也可以画多个子图
filename="D:/data/fujian1.csv"
with open(filename) as f:
reader=csv.reader(f)
header_row=next(reader)
X,Y,Z=[ ],[ ],[ ]
for row in reader:
X=int(float(row[1]))
Xs = np.array(X)
Y = int(float(row[2]))
Ys = np.array(Y)
Z= int(float(row[3]))
Zs = np.array(Z)
#作图
ax4.plot_surface(Xs,Ys,Zs,alpha=0.3,cmap='winter') #生成表面, alpha 用于控制透明度
ax4.contour(Xs,Ys,Zs,zdir='Zs', offset=-3,cmap="rainbow") #生成z方向投影,投到x-y平面
ax4.contour(Xs,Ys,Zs,zdir='Xs', offset=-6,cmap="rainbow") #生成x方向投影,投到y-z平面
ax4.contour(Xs,Ys,Zs,zdir='Ys', offset=6,cmap="rainbow") #生成y方向投影,投到x-z平面
#ax4.contourf(Xs,Ys,Zs,zdir='y', offset=6,cmap="rainbow") #生成y方向投影填充,投到x-z平面,contourf()函数
ax4.set_xlabel('X')
ax4.set_xlim(-300, 300) #拉开坐标轴范围显示投影
ax4.set_ylabel('Y')
ax4.set_ylim(-300, 300)
ax4.set_zlabel('Z')
ax4.set_zlim(-300, 300)
plt.savefig('figure2.png',dpi=500)
plt.show()
请问这段python代码为什么总报错?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- joel_1993 2021-09-12 14:42关注
同学你好,散点是无法生成surface的,必须是网格点2D才能生成平面
还有你这句for row in reader: X=int(float(row[1])) Xs = np.array(X) Y = int(float(row[2])) Ys = np.array(Y) Z= int(float(row[3])) Zs = np.array(Z)
要改成
for row in reader: X.append(int(float(row[1]))) Xs = np.array(X) Y.append(int(float(row[2]))) Ys = np.array(Y) Z.append(int(float(row[3]))) Zs = np.array(Z)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 opencv4nodejs 如何安装
- ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
- ¥15 nginx反向代理获取ip,java获取真实ip
- ¥15 eda:门禁系统设计
- ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
- ¥15 376.1电表主站通信协议下发指令全被否认问题
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥15 复杂网络,变滞后传递熵,FDA
- ¥20 csv格式数据集预处理及模型选择
- ¥15 部分网页页面无法显示!