pyecharts是我个人认为较为灵活,颜值颇高的可视化工具。
但是在使用过程中发现不同版本的差异过大,有时候旧版本可能使用起来更为方便。
在新版本中,官方给出的示例代码并不充分,很多功能难以自行学习实现。
首先上代码:
def plot_scatter(X, Y, save_dir): #version 1.5-1.9
from pyecharts.charts import Scatter3D, Page
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
Y = np.expand_dims(Y, 1)
data = np.concatenate((X,Y),axis=1)
piece=[
{'value': 0,'label': 'class A','color':'#e57c27'},
{'value': 1, 'label': 'class B','color':'#72a93f'},
{'value': 2, 'label': 'class C','color':'#368dc4'}
]
sc1 = Scatter3D()
sc1.add("", data.tolist())
sc1.set_global_opts(title_opts=opts.TitleOpts(title="3D scatter"),
visualmap_opts=opts.VisualMapOpts(dimension=3,is_piecewise=True, pieces=piece))
sc1.render(save_dir+'/test.html')
make_snapshot(snapshot, sc1.render(), save_dir+'/test.png')
这段代码适用于最新的pyecharts版本,但是生成的效果却无法达到预期目标。具体情况是三个类别的点不在同一个坐标系中!(可以通过坐标轴的数值来判断)
这个问题即使我看了好几遍手册也没找到解决方案,同时也没有找到遇到相同问题的朋友,如果有大佬知道怎么解决,望告知!
然后,在无意间发现,pyecharts的版本间差异很大,于是我就开始了漫长的版本挑选之旅~
def plot_scatter(X, Y, save_dir): # version 0.5
from pyecharts import Scatter3D, Page
Y = np.expand_dims(Y, 1)
data = np.concatenate((X,Y),axis=1)
piece=[
{'value': 0,'label': 'class A','color':'#e57c27'},
{'value': 1, 'label': 'class B','color':'#72a93f'},
{'value': 2, 'label': 'class C','color':'#368dc4'}
]
sc1 = Scatter3D("3D scatter", width=900, height=600)
sc1.add("", data.tolist(),
visual_dimension=3,
is_visualmap=True,
is_piecewise= True,
pieces= piece
)
sc1.render(save_dir+'/test.html')
最后发现pyecharts==0.5的版本最符合我的要求,生成图片如下(图例等细节部分没有仔细调整,和具体使用的浏览器好像也有关系,以下是firefox展示的效果,我记得chrome是没有问题的)。
细节上的调整往往需要更多的时间,为了达到预期效果,我花费了很多时间在检索和尝试当中。
希望以上内容对大家有所帮助,也希望熟悉新版pyecharts属性的朋友们可以多多跟我交流。