python图表可视化柱状图(数据可视化之pyecharts系列)
python图表可视化柱状图(数据可视化之pyecharts系列)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="政
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库中各个函数的配置项,熟练的使用配置项才能创造一个真正属于自己的图表。请各位等待下一期更新。