pyecharts是一款将python与echarts结合的强大的数据可视化工具,本系列文章将为你阐述pyecharts的使用细则,让你对数据进行可视化处理时更加得心应手。这一系列中全部代码在Windows 10系统下基于Python3.7和pyecharts1.9.0实际运行通过。
一、前言
在本系列上一篇文章中笔者介绍了使用pyecharts绘制地理图表的方法,运用pyecharts在绘制地图方面有着特有的优势,能动态且直观的展现出绘制者想在地图中表达的资源信息。在这一期文章里,笔者将介绍使用pyecharts绘制雷达图、词云图、日历图等基本图表。
二、使用实例
在本期文章中,我们需要导入的库有:
from pyecharts.charts import *
from pyecharts.components import Table
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
import random
import datetime
雷达图是一种平行坐标图,是一种从同一点开始的轴上表示多个定量或变量的二维图表。雷达图常用于绘制企业经营状况、展现评价指标之间的关系,能够直观地查看各类数据指标及数据变化趋势。

雷达图示例
实现代码:
data = [
[66, 91, 123, 78, 82, 67],
[89, 101, 45, 88, 86, 75],
[86, 93, 101, 84, 35, 73],
]
radar = (Radar()
.add_schema(schema=[
opts.RadarIndicatorItem(name="语文", max_=150),
opts.RadarIndicatorItem(name="数学", max_=150),
opts.RadarIndicatorItem(name="英语", max_=150),
opts.RadarIndicatorItem(name="政治", max_=100),
opts.RadarIndicatorItem(name="地理", max_=100),
opts.RadarIndicatorItem(name="历史", max_=100),
]
)
.add('', data)
)
radar.render('雷达图.html')
词云图是一种以各种词汇组成的二维图表,一般用于提取大量文本中的关键字词信息,使读者能一眼扫过词云图便可以明白其主要内容和关键信息,同时也提高了阅读文本的趣味性。

词云图示例
实现代码:
words = [
("heart", 173),
("no", 365),
("you", 360),
("can", 282),
("yes", 273),
("start", 265),
("hello", 365),
("world", 124),
("PPT", 436),
("frame", 255),
("Hadoop", 666),
("zookeeper", 244),
("goal", 681),
("today", 184),
("Monday", 12),
("last time", 148),
("configuration", 247),
("batter", 182),
("remember", 255),
("to", 150),
("make", 162),
("her", 266),
("in", 60),
("my", 82),
]
wc = (
WordCloud()
.add("", words)
)
wc.render('词云图.html')
日历图是一种能直观显示出对应日期的某个指标取值的动态图表,利用pyecharts中的Calendar方法绘制日历图十分简单。

日历图示例
实现代码:
begin = datetime.date(2021, 1, 1)
end = datetime.date(2021, 10, 29)
data = [[str(begin + datetime.timedelta(days=i)), random.randint(1000, 1200)]
for i in range((end - begin).days + 1)]
calendar = (
Calendar()
.add("", data,calendar_opts=opts.CalendarOpts(range_="2021"))
)
calendar.render('日历图.html')
饼图用于展现图表中各项的大小与各项总和的比例,常在统计学中应用。

饼图示例
实现代码:
cate = ['meituan','zhifubao','weixin','taobao','jingdong','pinduoduo']
data = [123,153,89,107,98,23]
pie = (Pie()
.add('', [list(z) for z in zip(cate, data)])
)
pie.render('饼图.html')
仪表盘图是pyecharts中一种特有图表,模仿汽车仪表盘码速表,生动地展示某项数据的取值。

仪表盘图示例
实现代码:
data = (
'不及格率',
12
)
gauge = (Gauge()
.add("", [data])
)
gauge.render('仪表盘图.html')
水球图同样是pyecharts库中一种特*图色**表,用于展示某一项指标的取值。

水球图示例
实现代码:
liquid = (Liquid()
.add("", [0.66, 0.34])
)
liquid.render('水球图.html')
平行坐标图用于展示在拥有高维度的评价指标情况下,各个评价对象之间的联系和等级。

平行坐标图示例
实现代码:
data = [
['301班', 78, 91, 123, 78, 82, 67, "优秀"],
['302班', 89, 101, 127, 88, 86, 75, "良好"],
['303班', 86, 93, 101, 84, 90, 73, "合格"],
]
parallel = (
Parallel()
.add_schema(
[
opts.ParallelAxisOpts(
dim=0,
name="班级",
type_="category",
data=["301班", "302班", "303班"],
),
opts.ParallelAxisOpts(dim=1, name="语文"),
opts.ParallelAxisOpts(dim=2, name="数学"),
opts.ParallelAxisOpts(dim=3, name="英语"),
opts.ParallelAxisOpts(dim=4, name="政治"),
opts.ParallelAxisOpts(dim=5, name="历史"),
opts.ParallelAxisOpts(dim=6, name="地理"),
opts.ParallelAxisOpts(
dim=7,
name="等级",
type_="category",
data=["优秀", "良好", "合格"],
),
]
)
.add("", data)
)
parallel.render('平行坐标图.html')
旭日图是一种特殊的饼图,能清晰地表达层级和从属关系,在pyecharts中我们使用Sunburst方法绘制。

旭日图示例
实现代码:
data = [
{"name": "广东",
"children": [
{"name": "广州",
"children": [
{"name": "天河区", "value": 55},
{"name": "越秀区", "value": 34},
{"name": "增城区", "value": 66},
]},
{"name": "东莞",
"children": [
{"name": "麻涌镇", "value": 156},
{"name": "望牛墩镇", "value": 134},
]},
{"name": "汕头", "value": 87},
{"name": "揭阳", "value": 23},
],
},
{"name": "*疆新**",
"children": [
{"name": "乌鲁木齐",
"children": [
{"name": "五家渠", "value": 55},
{"name": "昌吉", "value": 78},
{"name": "呼图壁", "value": 34},
]},
{"name": "阿克苏", "value": 67},
{"name": "克拉玛依", "value": 34},
],
},
{"name": "重庆", "value": 235}
]
sunburst = (Sunburst()
.add("", data_pair=data)
)
sunburst.render('旭日图.html')
河流图是一种特殊的流图,主要用于表示事件或主题在某一时间段内的变化情况。

河流图示例
实现代码:
cate = ['meituan','zhifubao','weixin','taobao','jingdong','pinduoduo']
date_list = ["2021/10/{}".format(i + 1) for i in range(30)]
data = [[day, random.randint(10, 50), c] for day in date_list for c in cate]
river = (
ThemeRiver()
.add(
series_name=cate,
data=data,
singleaxis_opts=opts.SingleAxisOpts(type_="time")
)
)
river.render('河流图.html')
3D散点图,用于展现三维数据在空间中的分布情况。

3D散点图示例
实现代码:
data = [(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)) for _ in range(100)]
scatter3D = (Scatter3D()
.add("", data)
)
scatter3D.render('3D散点图.html')
3D直方图,用于展示三维数据在空间中的分布情况。

3D直方图示例
实现代码:
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
bar3D = (
Bar3D()
.add(
"",
data,
xaxis3d_opts=opts.Axis3DOpts(hour_list, type_="category"),
yaxis3d_opts=opts.Axis3DOpts(week_list, type_="category"),
zaxis3d_opts=opts.Axis3DOpts(type_="value"),
)
)
bar3D.render_notebook()
以上就是这一期的全部内容,前三期内容笔者介绍了pyecharts库的一些图表的绘制方法,在这一系列的下一篇文章中笔者将介绍pyecharts库中各个函数的配置项,熟练的使用配置项才能创造一个真正属于自己的图表。请各位等待下一期更新。