Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib中的dataframe打印三维打印_Python_Pandas_Matplotlib_Plot - Fatal编程技术网

Python 使用matplotlib中的dataframe打印三维打印

Python 使用matplotlib中的dataframe打印三维打印,python,pandas,matplotlib,plot,Python,Pandas,Matplotlib,Plot,我有以下数据,绘制类似Matplotlib示例中显示的3d绘图时遇到问题-> 在x轴上,我想要留数列,在y轴上,第一行和z轴应该代表值 residue 0 1 2 3 4 5 6 \ 0 0.0 0.0 1.671928 1.441439 0.808492 1.079337 1.186970 1.445275 1 1.0 0.0 1

我有以下数据,绘制类似Matplotlib示例中显示的3d绘图时遇到问题->

在x轴上,我想要留数列,在y轴上,第一行和z轴应该代表值

     residue    0         1         2         3         4         5         6  \
0        0.0  0.0  1.671928  1.441439  0.808492  1.079337  1.186970  1.445275   
1        1.0  0.0  1.348867  1.216174  1.324360  1.965453  2.121130  1.713321   
2        2.0  0.0  1.281589  0.794236  1.083470  1.476939  2.011159  2.360246   
3        3.0  0.0  0.798151  0.993858  1.020617  0.829792  1.280412  1.653299   
4        4.0  0.0  0.789995  1.194215  1.407934  1.291384  1.555449  1.258266   
5        5.0  0.0  0.653958  0.910582  1.585495  1.245847  1.620384  1.664490   
6        6.0  0.0  0.782577  0.648373  1.284292  1.087762  1.523729  1.631152   
7        7.0  0.0  1.094054  1.127248  0.958693  1.168483  0.897470  1.404080   
8        8.0  0.0  0.433993  1.165169  0.925521  1.292363  1.075700  1.146139   
9        9.0  0.0  1.114398  0.963963  1.062597  1.297358  1.412016  1.422071   
10      10.0  0.0  0.706276  1.056272  1.381639  1.682080  1.779487  1.914487   
11      11.0  0.0  1.059623  1.000653  1.152697  1.895022  1.562730  1.964862
在这种情况下不使用数据帧更好吗

这是我使用的代码:

z = df.iloc[1:,1:-1]
ff= [i for i in range(1,500)]
y=df["residue"]
print(len(z))
nrows, ncols = z.shape
x = np.linspace(min(ff),max(ff), ncols)
x, y = np.meshgrid(x, y)
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
plt.show()
设置为
剩余量
列不再是数据的一部分

然后,可以从列和索引创建网格网格,并根据链接的示例进行打印

x,y = np.meshgrid(df.columns.astype(float), df.index)
z = df.values

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import LightSource

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))


rgb = LightSource(270, 45).shade(z, cmap=plt.cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, facecolors=rgb,
                       linewidth=0, antialiased=False, shade=False)

plt.show()

您一定可以使用数据帧。一个问题是,
residence
是帧的一列,因此它将包含在数据中。但是,您更愿意将其作为日期框索引。然后,您将需要创建一个索引和列的网格网格,如本主题的许多示例所示。非常感谢,这正是我想要的,df.value。实际上,我手动添加了列名8resume、1、2、3等,但显然这不是一个明智的策略。
x,y = np.meshgrid(df.columns.astype(float), df.index)
z = df.values

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import LightSource

fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))


rgb = LightSource(270, 45).shade(z, cmap=plt.cm.gist_earth, vert_exag=0.1, blend_mode='soft')
surf = ax.plot_surface(x, y, z, facecolors=rgb,
                       linewidth=0, antialiased=False, shade=False)

plt.show()