首页 > 解决方案 > python中的3D绘图,z轴的帮助

问题描述

我的目标是制作这样的图表(不是使用相同的数据,而是使用相同的类型): 意见动态的 3D 时间序列

假设我有一个带有 100 列的 pandas DataFrame,其中包含 [0,1] 之间的值,它们与图中的“意见”相同。数据集df也有 500 行,代表图形的“时间”。例如:

df:

Ind y0   y1  y2  y3  y4  y5  y6  ... 100 
0   0.7 0.9 0.2 0.0 0.0 0.9 0.9 0.9 0.9
1   0.8 0.9 0.2 0.0 0.0 0.9 0.9 1.0 0.9 
2   0.8 0.9 0.1 0.0 0.0 0.9 1.0 1.0 0.9 
... 0.9 0.9 0.1 0.0 0.0 0.9 1.0 1.0 0.9 
500 0.9 0.9 0.1 0 0 0.9 1.0 1.0 1.0 1.0     

如果我们将索引视为 x 并将列视为 y 我已经设法使用以下代码将它们绘制为 2D:


fig = plt.figure(figsize=(10,10))
ax = plt.axes(projection ='3d')  
for column in df:  
    ax.plot(df.index, df[column], marker='', color="dodgerblue", linewidth=1, alpha=0.9, label=column)

我的结果如下: 2D plot

我正在努力的是z轴。在我看来,我需要的是另一个数据集(我们称之为df_1),其中的列填充 df了整个行的计数。例如,仅考虑上一个示例的 6 列和 2 行,df_1将是:

df_1:

Ind  z0  z1  z2  z3  z4  z5  z6 
0     1  3   1   2    2  3  3
1     1  3   1   2    2  3  3
2     1  2   1   2    2  2  1 

第一行的第一个单元格df_1是 = 1,因为df[:,0] 其中有一次 0.7。第二个是 3 因为df[:,0]有 3 乘以 0.9 等等......

我怎样才能像示例中那样构建数据集df_1?或者您对如何在我的图表中实现 z 轴有更好的想法?

在此先感谢您的帮助

标签: pythonplot3d

解决方案


解决了

def map_value_counts(row):
    vmap = row.value_counts().to_dict()
    return row.replace(vmap)

df_1 = df.apply(map_value_counts, axis=1)`

推荐阅读