微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 来自2D pandas数据帧的Matplotlib 3D表面图

我有一个包含四列测量数据的pandas数据帧.我想创建一个三维曲面图,行索引为X,列索引为Y,数据为Z.(每列中的数据是一系列离散测量输出,来自测试,逐步执行所有值每个类别X的X)

import pandas as pd
import numpy as np


df = pd.DataFrame(np.random.randn(5, 4), columns=['A', 'B', 'C', 'D'])
print(df)

   A         B         C         D
0  0.791692 -0.945571  0.183304  2.039369
1 -0.474666  1.117902 -0.483240  0.137620
2  1.448765  0.228217  0.294523  0.728543
3 -0.196164  0.898117 -1.770550  1.259608
4  0.646730 -0.366295 -0.893671 -0.745815

我尝试使用np.meshgrid将df转换为numpy网格,如下所示,但不确定我是否真正了解所需内容,或者是否可以这样使用df索引.

import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = df.columns
y = df.index
X,Y = np.meshgrid(x,y)
Z = df
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

在这里阅读了matplotlib 3D教程及相关答案,但仍然卡住了.如果有人能指出我正确的方向,请将非常感激.

解决方法:

你追求的一般策略很好.您唯一的错误是您从字符串列表创建meshgrid.当然maplotlib不能绘制字符串.

因此,您可以创建一个与数据框中列数相同长度的数组,并将其插入到meshgrid中.

x = np.arange(len(df.columns))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐