利用pyecharts画图
在聚类分析后利用pyecharts画二维和三维散点图,pyecharts画的图片一般是以html文件保存
首先确定x轴的数据,而后再确定y轴的数据,这样可以确定平面的数据,当然是因为聚类,分了五簇,确定了五个y的值
data_1=data.values
x=data_1[:,3]
y1=x0.values[:,0]
y2=x1.values[:,0]
y3=x2.values[:,0]
y4=x3.values[:,0]
y5=x4.values[:,0]
(Scatter()
.add_xaxis(xaxis_data=x) #图中不显示数据
.add_yaxis(series_name='1',y_axis=y1,label_opts=opts.LabelOpts(is_show=False))
.add_yaxis(series_name='2',y_axis=y2,label_opts=opts.LabelOpts(is_show=False))
.add_yaxis(series_name='3',y_axis=y3,label_opts=opts.LabelOpts(is_show=False))
.add_yaxis(series_name='4',y_axis=y4,label_opts=opts.LabelOpts(is_show=False))
.add_yaxis(series_name='5',y_axis=y5,label_opts=opts.LabelOpts(is_show=False))
).render("L-M.html")
这样可以画出二维中的点
对于画三维的图要首先要把数据整理一下,整理成[[x,y,z],[q,w,e]]这种类型的列表三个一组的数据形成三个坐标,抽出xyz的三类数据,利用hstack函数将其合并成三列数组,利用list函数将其变为一个大列表,再解析列表,三个一组这样就可以构成想要的数据形式了,数据构造好,套用官方给的模板就可以了。
from pyecharts.charts import Scatter3D
xd=data_1[:,1]
yd=data_1[:,3]
zd=data_1[:,4]
data_3D=np.hstack((xd,yd,zd)) #三列数据放一起
ls=list(data_3D)
data_list=[ls[i:i+3] for i in range(0,len(ls),3)]
(
Scatter3D(
init_opts=opts.InitOpts(width="1440px", height="720px")
) # bg_color="black"
.add(
series_name="",
data=data_list,
xaxis3d_opts=opts.Axis3DOpts(
name="F",
type_="value",
# textstyle_opts=opts.TextStyleOpts(color="#fff"),
),
yaxis3d_opts=opts.Axis3DOpts(
name="M",
type_="value",
# textstyle_opts=opts.TextStyleOpts(color="#fff"),
),
zaxis3d_opts=opts.Axis3DOpts(
name="R",
type_="value",
# textstyle_opts=opts.TextStyleOpts(color="#fff"),
),
grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100),
)
.set_global_opts(
visualmap_opts=[
opts.VisualMapOpts(
type_="color", #颜色映射
is_calculable=True,
dimension=3,
pos_top="10",
max_=79 / 2,
range_color=[
"#1710c0",
"#0b9df0",
"#00fea8",
"#00ff0d",
"#f5f811",
"#f09a09",
"#fe0300",
],
),
opts.VisualMapOpts(
type_="size", #数值大小映射
is_calculable=True, #是否显示拖拽手柄
dimension=4,
pos_bottom="10",
max_=2.4 / 2,
range_size=[-10, 10],
),
]
)
.render("scatter3d.html")
)