Python 3.x 无法使用数据帧的图例进行三维打印
我正试图从一个Python 3.x 无法使用数据帧的图例进行三维打印,python-3.x,pandas,numpy,matplotlib,graph,Python 3.x,Pandas,Numpy,Matplotlib,Graph,我正试图从一个Pandas.DataFrame对象制作一个3d绘图 要求 要为z绘制的列数可能会有所不同,因此我使用了一个循环,用于带有固定x和y值的z值。代码显示在代码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', '
Pandas.DataFrame
对象制作一个3d绘图
要求
- 要为
绘制的列数可能会有所不同,因此我使用了一个循环,用于带有固定z
和x
值的y
值。代码显示在z
中代码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()
问题:
当我执行代码1时,我得到一个错误-
Argument Z must be 2-dimensional.
我在使用-plot\u trisurf
时解决了这个问题,如code 2
所示
代码2
for x in df.columns:
if(x!='A' and x!='B'):
ax2.plot_trisurf(df['A'].values, df['B'].values, df[x].values, linewidth=0, 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.
问题
- 如何为带有图例的Z数据框制作不同列数的3d绘图
上面提供的数据仅用于实验,可能不均匀,可能有小数。您得到的qhull错误可能是因为
'A'
和'B'
列包含线性相关的数据,即点在一条线上(您没有发布数据,因此我无法验证)。plot_trisurf
函数尝试从传递给它的X,Y
参数(代码中的df['a']值
,df['B']值
)构造一个。
单一/退化配置调用错误源,该错误源是用于构造Delaunay三角剖分的底层库(另请参见)
如果您的数据是单数/退化的,您可以使用或
如果您坚持曲面图,并且您的数据是单数的,那么您可以尝试使用
X,Y
数据,这样底层的三角剖分就不会失败。您得到的qhull错误可能是因为'a'
和'B'
列包含线性相关的数据,即点在一条直线上(您没有发布数据,因此我无法验证)。函数plot_trisurf
尝试从您传递的X,Y
参数(df['a'].值,df['B']值
)。
单一/退化配置调用错误源,该错误源是用于构造Delaunay三角剖分的底层库(另请参见)
如果您的数据是单数/退化的,您可以使用或
如果您坚持使用曲面图,并且您的数据是单数的,您可以尝试使用X,Y
数据,以便底层三角剖分不会失败