Pyecharts库实现平行坐标图的绘制(iris数据集)
一、安装pyecharts库
首先需要安装pyecharts库,网上的教程有很多,但很多版本号并不好用,最终我是用了1.7.1这个版本。
二、导入数据集
import pandas as pd
from sklearn import datasets
flower_data = datasets.load_iris() # 导入鸢尾花数据集
# 将特征和标签合并为一个表格
data_1 = pd.concat([pd.DataFrame(flower_data.data), pd.DataFrame(flower_data.target, columns=[4])], axis=1)
data_2 = data_1.values.tolist() # 提取表格的数据部分并转换成列表类型
# 将标签0,1,2替换为"setosa","versicolor","virginica"
for x in data_2:
if x[4] == 0:
x[4] = "setosa"
elif x[4] == 1:
x[4] = "versicolor"
elif x[4] == 2:
x[4] = "virginica"
三、绘制平行坐标图
使用pyecharts库绘制平行坐标图参考官方文档
如果想要显示不同数据线条的颜色,分别多次调用add函数分批导入数据就可以了。
from pyecharts import options as opts
from pyecharts.charts import Parallel
c = (
Parallel()
.add_schema(
[
opts.ParallelAxisOpts(dim=0, name='花萼长度'),
opts.ParallelAxisOpts(dim=1, name="花萼宽度"),
opts.ParallelAxisOpts(dim=2, name="花瓣长度"),
opts.ParallelAxisOpts(dim=3, name="花瓣宽度"),
opts.ParallelAxisOpts(
dim=4,
name="类别",
type_="category",
data=["setosa", "versicolor", "virginica"],
),
]
)
.add("setosa", [x for x in data_2 if x[4] == "setosa"])
.add("versicolor", [x for x in data_2 if x[4] == "versicolor"])
.add("virginica", [x for x in data_2 if x[4] == "virginica"]) # 将不同类别的数据分三次导入,可显示不同颜色并生成label
.set_global_opts(title_opts=opts.TitleOpts(title="鸢尾花数据集")) # 图片label
.render("iris_parallel_graph.html")
)
保存的html文件在py文件同一路径下可以找到。