我正在尝试使用pyecharts来绘制3D条形图,如下所示的数据结构来自于csv文件。
Date School1 School2 School3
2021/3/1 853 195 316
2021/3/2 165 257 461
2021/3/3 469 314 167
2021/3/4 857 532 495
2021/3/5 326 139 595
2021/3/6 802 616 439
2021/3/7 768 962 416
2021/3/8 911 241 82
2021/3/9 960 965 229 Pyechart将Bar3D绘图数据以X、Y、Z轴的方式绘制,顺序如下:
x0,y0,z0(value)
x0,y1,z1
x0,y2,z2
...
x1,y0,zn那么有没有什么简单的方法可以把上面的dataframe数据转换成这个'xyz‘数据呢?
发布于 2021-05-03 18:16:10
我只是写了一段代码,将数据帧中的数据转换成pyecharts Bar3D所需的数据序列。虽然它有点麻烦,而且是半成品,但现在它可以工作了。我是python的大块头,所以代码很难看,但我还是会把它们贴在这里。
对于X轴,我没有将它替换为日期,但这对我来说并不是太重要。我的主要目标是制作另一个大量的数据来绘制这种风格的图表。这对我来说已经足够了。
import pandas as pd
import numpy as np
data = pd.read_csv(r"g:\s1.txt")
S1 = data['School1']
S2 = data['School2']
S3 = data['School3']
Lists1 = []
Lists2 = []
Lists3 = []
for i in range(len(data)):
s1d = int(S1[i])
s2d = int(S2[i])
s3d = int(S3[i])
Lists1.append([i,0,s1d])
Lists2.append([i,1,s2d])
Lists3.append([i,2,s3d])
Listxyz = Lists1 + Lists2 + Lists3发布于 2021-05-03 17:39:35
根据bar3d()的说法,data由一个二维数组表示。对于school1,我认为您可以这样做
df['y'] = 0
data = df[['Date', 'y', 'School1']].values.tolist()print(data)
[['2021/3/1', 0, 853], ['2021/3/2', 0, 165], ['2021/3/3', 0, 469], ['2021/3/4', 0, 857], ['2021/3/5', 0, 326], ['2021/3/6', 0, 802], ['2021/3/7', 0, 768], ['2021/3/8', 0, 911], ['2021/3/9', 0, 960]]如果您不想编辑原始数据帧
df_ = pd.concat([df['Date'], pd.Series([0]*len(df)), df['School1']], axis=1)
data = df_.values.tolist()https://stackoverflow.com/questions/67363944
复制相似问题