目录
一、柱状图
二、折线图
三、饼图
四、地图
1. 中国地图
2. 世界地图
3. 省会地图
五、词云
Pyecharts是一个用于数据可视化的Python库。它基于Echarts库,可以通过Python代码生成各种类型的图表,如折线图、柱状图、饼图、散点图等。
Pyecharts提供了一种简单、灵活的方式来创建交互式和动态的图表。它支持多种数据格式,包括列表、字典、Pandas的DataFrame等。可以通过调用Pyecharts的各种方法和属性,设置图表的标题、坐标轴、图例等属性,并可以自定义样式、颜色和标签等。
Pyecharts还提供了多种输出格式,包括HTML文件、图片文件和Jupyter Notebook等。生成的图表可以在网页上进行交互,并支持缩放、切换数据等功能。
pyecharts学习网站:点这里进入
色卡查询网:点这里进入
一、柱状图
from pyecharts import options
from pyecharts.charts import Bar
# 1.创建柱状图对象
bar = Bar()
# 2.添加数据
# x轴数据只能有一个,y轴可以有多个,但是y轴数据必须和x轴对应
# 添加x轴数据
bar.add_xaxis(['数据分析', '物联网', '云计算', 'Java开发', '鸿蒙开发'])
# 添加y轴数据
# 单独设置特殊标记点也在数据内部设置
bar.add_yaxis('招生人数',
[980, 1200, 654, 1315, 805],
color='#c0ebd7',
# bar_width=60, # 柱子宽度(单独设置这一个数据宽度时可能会导致另一个柱子不显示)
# bar_max_width=60, # 缩放时柱子的最大、最小宽度
# bar_min_width=60,
)
bar.add_yaxis('应届生人数',
[520, 200, 129, 802, 109],
color='#b0a4e3')
# 3.添加配置
# 1)全局配置
bar.set_global_opts(
# a.标题配置
title_opts=options.TitleOpts(
# 设置标题内容和标题点击跳转的网址
title='某教育各学生招生信息', # 主标题
title_link='https://www.baidu.com',
subtitle='2023年年度总结', # 副标题
subtitle_link='https://www.taobao.com',
# 设置标题位置
# pos_left='50',
pos_right='260',
# 设置对齐方式
text_align='center', # right,left,center
),
# b.图例配置
legend_opts=options.LegendOpts(
is_show=True, # 图例展示/隐藏
pos_right=100, # 图例位置
pos_top=30,
item_width=10 # 图例大小
),
# c.x轴和y轴的配置
xaxis_opts=options.AxisOpts(
name='学科名称'
),
yaxis_opts=options.AxisOpts(
name='人数',
# 设置起始最小值、最大值
# min_=100,
# max_=1400,
),
# d.添加数据缩放工具(数据多,柱子挤的时候用)
# datazoom_opts=options.DataZoomOpts(
# is_show=True, # 默认显示中间部分
# # 更改默认的显示部分
# range_start=0,
# range_end=50
# )
)
# 2)系列配置(针对图上的内容)
bar.set_series_opts(
# a.设置数据标记
label_opts=options.LabelOpts(
is_show=True, # 柱状图上的数字是否显示
position='top', # top,bottom,right,left
color='#177cb0', # 字体颜色
rotate=45, # 旋转
),
# b.标记点(标记特殊点)
markpoint_opts=options.MarkPointOpts(
data=[
# 注意数据的类型
options.MarkPointItem(name='最大值',type_='max'),
options.MarkPointItem(name='最小值',type_='min')
]
),
markline_opts=options.MarkLineOpts(
data=[
options.MarkLineItem(name='平均值', type_='average')
]
)
)
# 制图
bar.render('charts/柱状图.html')
导入options
模块是为了使用Pyecharts库的可视化图表的参数配置选项。该模块包含了各种可用的配置选项,可以通过设置这些选项来自定义图表的样式、布局和行为。例如,可以使用options
模块来设置图表的标题、坐标轴名称、颜色主题、图例位置等。这样可以根据需要将图表个性化地定制成符合自己需求的样式。
二、折线图
from pyecharts.charts import Line
from pyecharts import options
# 1.创建折线图对象
line1 = Line()
# 2.添加数据
line1.add_xaxis(['数据分析', '物联网', '云计算', 'Java开发', '鸿蒙开发'])
line1.add_yaxis('招生人数',
[980, 1200, 654, 1315, 805],
color='#99CCFF',
is_smooth=True, # 是否平滑
# 线型可选:solid', 'dashed', 'dotted'
linestyle_opts=options.LineStyleOpts(
type_='dashed'
)
)
line1.add_yaxis('应届生人数',
[520, 200, 129, 802, 109],
color='#CC99CC'
)
# 添加配置
# 全局
line1.set_global_opts(
# 设置标题
title_opts=options.TitleOpts(
title='某教育招生情况',
pos_left='380'
),
# 图例
legend_opts=options.LegendOpts(
pos_right=90,
pos_top=30
)
)
# 系列配置
line1.set_series_opts(
# 特殊标记点
markline_opts=options.MarkLineOpts(
# 添加平均值标记线
data=[
# type_的值:max,min,average
options.MarkLineItem(name='平均值', type_='average')
]
)
)
# 4.制图
line1.render('charts/折线图.html')
三、饼图
from pyecharts.charts import Pie
from pyecharts import options
# 1.创建饼图对象
pie1 = Pie()
# 2.添加数据
pie1.add('销量',
[('华为',120980),('小米',98647),('oppo',20098),('Apple',109840),('三星',5679)],
# 设置内圆半径和外圆半径
radius=(60, 150),
# 让外半径的大小和数据占比相关联
# 即外圆半径和下图一样不一样,若要外圆半径一直,则将下面一句代码注释
rosetype='radius'
)
# 3.添加配置
pie1.set_global_opts(
legend_opts=options.LegendOpts(
is_show=False
),
title_opts=options.TitleOpts(
title='2023年京东商城个品牌手机销量',
pos_left='310'
)
)
pie1.set_series_opts(
label_opts=options.LabelOpts(
# {b} - 名称
# {d} - 比例值
# 默认没有%存在,所以注意添加
formatter='{b}({d}%)'
)
)
# 4.制图
pie1.render('charts/饼图.html')
四、地图
1. 中国地图
pyecharts import options
from pyecharts.charts import Map
# =================中国地图=================
# 1.创建地图对象
map1 = Map()
# 2.添加数据
# 默认中国地图
map1.add(
'人口数量',
[
('四川省', 34918288),
('重庆市', 9192828),
('山东省', 10928282),
('辽宁省', 892733),
('北京市', 109923),
('上海市', 29981729),
('广西省', 782911)
],
# 限制缩放比例
min_scale_limit=0.5,
max_scale_limit=3,
# 默认显示的缩放比例
zoom=1.5,
# 设置地图位置
pos_top=150
)
# 3.添加配置
map1.set_global_opts(
title_opts=options.TitleOpts(
title='2023年全国人口数量分布图',
pos_left='350'
),
legend_opts=options.LegendOpts(
is_show=False
),
# 添加视觉地图配置(让不同区域填充对应的颜色)
visualmap_opts=options.VisualMapOpts(
is_show=True,
# 颜色范围的最大值、最小值设定是根据上方自己添加的数据
min_=50000,
max_=35000000,
# 是否显示颜色范围图例
is_piecewise=True
)
)
# 4.制图
map1.render('charts/地图.html')
2. 世界地图
# 1.创建地图对象
map2 = Map()
# 2.添加数据,并且设置地图类型(默认是china)
map2.add(
'人均GDP',
[('China', 192830), ('Canada', 154728), ('Australia', 25845), ('Spain', 85462)],
maptype='world', #
# 限制缩放比例
min_scale_limit=0.5,
max_scale_limit=2,
# 默认显示的缩放比例
# zoom=1.5,
# 设置地图位置
# pos_top=150
)
# 3.添加配置
map2.set_global_opts(
title_opts=options.TitleOpts(
title='2023年世界各国人均GDP',
pos_left='400'
),
legend_opts=options.LegendOpts(
is_show=False
),
# 添加视觉地图配置(让不同区域填充对应的颜色)
visualmap_opts=options.VisualMapOpts(
is_show=True,
min_=20000,
max_=200000,
# 是否显示颜色范围图例
is_piecewise=True
)
)
map2.set_series_opts(
label_opts=options.LabelOpts(
is_show=False
)
)
# 4.制图
map2.render('charts/世界地图.html')
3. 省会地图
# 1.创建地图对象
map3 = Map()
# 2.添加数据
# 默认中国地图
map3.add(
'人口数量',
[
('成都市',98542)
],
maptype='四川',
# 限制缩放比例
min_scale_limit=0.5,
max_scale_limit=3,
# 默认显示的缩放比例
zoom=1.1,
# 设置地图位置
# pos_top=150
)
# 3.添加配置
map3.set_global_opts(
title_opts=options.TitleOpts(
title='2023年全国人口数量分布图',
pos_left='350'
),
legend_opts=options.LegendOpts(
is_show=False
),
# 添加视觉地图配置(让不同区域填充对应的颜色)
visualmap_opts=options.VisualMapOpts(
is_show=True,
min_=50000,
max_=35000000,
# 是否显示颜色范围图例
is_piecewise=True
)
)
# # 4.制图
map3.render('charts/省会地图.html')
注意:
除了上面介绍的三种地图,还可以是范围更小的市地图,都只需要将maptype='四川'改成相应的地区,例如:
五、词云
from pyecharts import options
from pyecharts.charts import WordCloud
# 1.
wc1 = WordCloud()
# 2.添加数据
wc1.add(
'',
[('英雄联盟', 91828), ('红色警戒', 1928), ('怪物猎人世界', 25468), ('守望先锋', 86472),
('植物大战僵尸', 1828), ('原神', 666666), ('开心消消乐', 238940), ('王者荣耀', 10458642), ('光遇', 3898309),
('地下城与勇士', 1056321), ('神界原罪', 91828), ('只狼', 1335468), ('桃园深处有人家', 388309), ('第五人格', 246513),
('蛋仔派对', 1523845), ('茶杯头', 2828), ('柏承俊', 115434), ('逆水寒', 348665), ('狂扁小朋友', 999999),
('纸嫁衣', 3898309),
('造梦西游', 28), ('闪电五连鞭', 154121), ('赛博朋克2077', 54723), ('洛克王国', 389), ('抓大鹅', 3456),
('黑神话 · 悟空', 9122828),
('黎明杀机', 114514), ('4399', 3089), ('虐杀2', 86744), ('战锤', 9128), ('绝地求生', 1654845), ('不是,哥们', 56789),
('绝区零', 1520), ('APEX', 2315120), ("鸣潮", 2384337), ('光与夜之恋', 3898309), ('CSGO', 1290), ('永劫无间', 290),
('守望先锋', 120), ('和平精英', 15032), ('qq飞车', 782), ('第五人格', 403),
('穿越火线', 3909), ('诛仙', 109), ('红警', 99), ('qq农场', 297), ('地铁跑酷', 1282), ('蛋仔派对', 981),
('贪吃蛇', 70), ('蜘蛛纸牌', 1009), ('扫雷', 431), ('金铲铲之战', 1002525), ('十字军之王', 1453), ('apex', 16547),
('暴力摩托', 5647),
('倩女幽魂', 536), ('魔兽3冰封王座', 48985), ('valorant', 888), ('羊了个羊', 2035689), ('幻兽帕鲁', 473453),
('彩虹六号', 54343),
('生化危机', 1654), ('恋爱脑', 23432), ('QQ炫舞', 23580), ('猛鬼宿舍', '2343'), ('战神3', 5151512),
('骑马与砍杀', 16465), ('Dota2', 2000),
('QQ飞车', 2353), ('食物语', 890), ('PUBG', 5251), ('光遇', 24235), ('孤岛惊魂5', 4654), ('江南百景图', 6873),
('漫威蜘蛛侠', 1412), ('Cuphead', 4141),
('荒野大镖客', 12515), ('GTA5', 1251), ('战地1', 1515),
('战地2', 1515), ('战地5', 1515), ('彩虹六号', 1515), ('Dota2', 2141), ('魔兽争霸', 1515), ('守望先锋2', 142515)
],
# 设置轮廓形状: 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选
shape='star'
)
# 3.制图
wc1.render('charts/词云.html')
上面给出的词云只能看出大概形状,因为代码中给出的数据太少了。所以词云绘图一般会和数据爬取、表格、数据库等关联使用。