如何解决无法为数据框制作带有图例的3d图
我正在尝试从Pandas.DataFrame
对象制作3d图。
要求
- 要为
z
绘制的列数可能会有所不同,因此我在使用z
和x
固定值的y
值使用循环。该代码显示在Code 1
中。
代码1
import matplotlib.pyplot as plt
import urllib,base64
from mpl_toolkits.mplot3d import axes3d
import numpy as np
import pandas as pd
column_names = ['A','B','C','D','E']
df = pd.DataFrame(columns=column_names)
fig2 = plt.figure(figsize=(15,15))
ax2 = fig2.add_subplot(111,projection='3d')
for x in df.columns:
if(x!='A' and x!='B'):
ax2.plot_surface(df['A'].values,df['B'].values,df[x].values,linewidth=0,antialiased=False)
ax2.legend()
问题:
执行Code 1
时出现错误-
Argument Z must be 2-dimensional.
使用plot_trisurf
时,我已经解决了它,如Code 2
所示。
代码2
for x in df.columns:
if(x!='A' and x!='B'):
ax2.plot_trisurf(df['A'].values,antialiased=False)
ax2.legend()
但是现在我遇到了另一个错误-
Error in qhull Delaunay triangulation calculation: singular input data (exitcode=2); use python verbose option (-v) to see original qhull error.
问题
- 如何为
Pandas.DataFrame
制作3d图,其中Z的列数不同带有图例
注意
以上提供的数据仅用于实验,可能不统一,可以有小数点。
解决方法
您遇到的qhull错误可能是因为'A'
和'B'
列包含的数据是线性相关的,即,点在一条线上是几何形状的(您未发布数据,所以我无法验证)。 plot_trisurf
函数尝试通过传递的X,Y
参数(代码中的df['A'].values
,df['B'].values
)来构造一个Delaunay triangulation。
单数/简并配置会从Qhull调用错误,my answer here是用于构造Delaunay三角剖分的基础库(另请参见scatter plots)。
如果数据是奇异/简并的,则可以改用line plots或"joggle"。
如果您坚持使用表面图,并且数据是奇异的,则可以尝试https://vladmihalcea.com/hibernate-resulttransformer/ X,Y
数据,以便基础三角剖分不会失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。