我正在字符串中使用pyecharts绘制3D-BARS图,如下所示的数据结构来自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
Pyecharts Bar3D将数据绘制为X、Y、Z轴方式,顺序如下:
x0,y0,z0(value)
x0,y1,z1
x0,y2,z2
...
x1,y0,zn
那么,有什么简单的方法可以将上面的数据帧数据转换为"xyz"数据吗?
根据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()
我刚刚写了一段代码,将数据帧中的数据转换为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