pyecharts应用2 柱状图
Posted 刘文巾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyecharts应用2 柱状图相关的知识,希望对你有一定的参考价值。
0 涉及网站
pyecharts 官方文档 https://pyecharts.org/#/zh-cn/intro
pyecharts 官方展示 http://pyecharts.herokuapp.com/
系列配置项 https://pyecharts.org/#/zh-cn/series_options
ToolboxOpts:工具箱配置项
https://pyecharts.org/#/zh-cn/global_options?id=toolboxopts%EF%BC%9A%E5%B7%A5%E5%85%B7%E7%AE%B1%E9%85%8D%E7%BD%AE%E9%A1%B9LegendOpts:图例配置项
https://pyecharts.org/#/zh-cn/global_options?id=legendopts%EF%BC%9A%E5%9B%BE%E4%BE%8B%E9%85%8D%E7%BD%AE%E9%A1%B9DataZoomOpts:区域缩放配置项
https://pyecharts.org/#/zh-cn/global_options?id=datazoomopts%EF%BC%9A%E5%8C%BA%E5%9F%9F%E7%BC%A9%E6%94%BE%E9%85%8D%E7%BD%AE%E9%A1%B9
1 导入库
from pyecharts import options as opts
from pyecharts.charts import Bar
2 普通柱状图
c=Bar()
c.add_xaxis(['生命值','远程伤害','攻击速度','持续时间'])
c.add_yaxis('加农炮',[742,175,1,30])
c.add_yaxis('迫击炮',[1012,183,1,30])
c.add_yaxis('炸弹塔',[1126,184,1.6,25])
c.add_yaxis('特斯拉电塔',[1152,230,1.1,35])
c.add_yaxis('地狱之塔',[1749,848,0.4,30])
c.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'))
c.render('cr_base.html')
柱状图效果图
相比于matplotlib,这种柱状图的好处是,我可以只选定几栏查看:
3 链式实现柱状图
c1=(
Bar()
.add_xaxis(['生命值','远程伤害','攻击速度','持续时间'])
.add_yaxis('加农炮',[742,175,1,30])
.add_yaxis('迫击炮',[1012,183,1,30])
.add_yaxis('炸弹塔',[1126,184,1.6,25])
.add_yaxis('特斯拉电塔',[1152,230,1.1,35])
.add_yaxis('地狱之塔',[1749,848,0.4,30])
.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'))
.render('cr_base1.html')
)
柱状图的效果和2是一样的
4 is_selected:是否选中图例
c1=(
Bar()
.add_xaxis(['生命值','远程伤害','攻击速度','持续时间'])
.add_yaxis('加农炮',
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
[742,175,1,30],
#系列数据
is_selected=True,
#是否选中图例
)
.add_yaxis('迫击炮',
[1012,183,1,30],
is_selected=False)
.add_yaxis('炸弹塔',
[1126,184,1.6,25],
is_selected=False)
.add_yaxis('特斯拉电塔',
[1152,230,1.1,35],
is_selected=True)
.add_yaxis('地狱之塔',
[1749,848,0.4,30],
is_selected=False)
.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'))
.render('cr_base1.html')
)
我们在代码中,设定了“加农炮”和“特斯拉电塔”是is_selected。那么图是不是这样的呢?答案是是的
5 stack——叠加柱状图
这里还有一条“set_series_opts( label_opts=opts.LabelOpts(is_show=False))”,加了这条语句之后,就不会显示柱状图上的数字了。
c1=(
Bar()
.add_xaxis(['生命值','远程伤害','攻击速度','持续时间'])
.add_yaxis('加农炮',
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
[742,175,1,30],
#系列数据
stack='3圣水',
#数据堆叠,相同的 stack 值可以堆叠放置。
)
.add_yaxis('迫击炮',
[1012,183,1,30],
stack='5圣水',
)
.add_yaxis('炸弹塔',
[1126,184,1.6,25],
stack='5圣水',
)
.add_yaxis('特斯拉电塔',
[1152,230,1.1,35],
stack='4圣水',
)
.add_yaxis('地狱之塔',
[1749,848,0.4,30],
stack='5圣水',
)
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False))
#不显示标签
.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'))
.render('cr_base1.html')
)
6 color——设置颜色
配置add_yaxis函数的color参数。
优点是方便,缺点是有时会出现颜色错位。
更好的方法是使用“系列配置项”中的“ItemStyleOpts:图元样式配置项”
具体可以见 https://pyecharts.org/#/zh-cn/series_options
c1=(
Bar()
.add_xaxis(['生命值','远程伤害','攻击速度','持续时间'])
.add_yaxis('加农炮',
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
[742,175,1,30],
#系列数据
color='red',
)
.add_yaxis('迫击炮',
[1012,183,1,30],
color='green',
)
.add_yaxis('炸弹塔',
[1126,184,1.6,25],
color='blue',
)
.add_yaxis('特斯拉电塔',
[1152,230,1.1,35],
color='pink',
)
.add_yaxis('地狱之塔',
[1749,848,0.4,30],
color='purple',
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'))
.render('cr_base1.html')
)
7 设置标签相对于柱状图的位置
c1=(
Bar()
.add_xaxis(['生命值','远程伤害','攻击速度','持续时间'])
.add_yaxis('加农炮',
# 系列名称,用于 tooltip 的显示,legend 的图例筛选。
[742,175,1,30],
#系列数据
label_opts=opts.LabelOpts(
position='insideBottom'),
)
.add_yaxis('迫击炮',
[1012,183,1,30],
label_opts=opts.LabelOpts(
position='insideTop',
font_size=20),
)
# 设置标签位置和字号
.add_yaxis('炸弹塔',
[1126,184,1.6,25],
)
.add_yaxis('特斯拉电塔',
[1152,230,1.1,35],
)
.add_yaxis('地狱之塔',
[1749,848,0.4,30],
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'))
.render('cr_base1.html')
)
由于后三个是一样的效果,所以我们点开一个就可以了
8 添加工具栏
前面都不变,改变set_global_opts里面的内容
c.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'),
toolbox_opts=opts.ToolboxOpts(),
# 显示工具栏
)
看到右上方出现了状态栏
9 是否显示图例
前面都不变,改变set_global_opts里面的内容
c.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'),
legend_opts=opts.LegendOpts(is_show=False) #是否显示图例
)
10 缩放滑块
前面都不变,改变set_global_opts里面的内容
c.set_global_opts(
title_opts=opts.TitleOpts(
title='CR单位属性',
subtitle='防御塔'),
datazoom_opts=opts.DataZoomOpts(),
#Bar-显示水平方向的缩放滑块
)
11 层叠折线与柱状图
Faker见 pyecharts应用3 Faker函数库_刘文巾的博客-CSDN博客
from pyecharts import options as opts
from pyecharts.charts import Bar, Line
from pyecharts.faker import Faker
v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
v3 = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
bar = (
Bar()
.add_xaxis(Faker.months)
.add_yaxis("蒸发量", v1)
.add_yaxis("降水量", v2)
#到这里和之前的柱状图都是一样的
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(formatter="{value} °C"), interval=5
)
)
#添加一个新的坐标轴(副y坐标,右边的y的格式)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
#不显示柱状图的标签
.set_global_opts(
title_opts=opts.TitleOpts(title="Overlap-bar+line"),
yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} ml")),
)
#主y坐标(左边的y)的格式
)
line = Line().add_xaxis(Faker.months).add_yaxis("平均温度", v3, yaxis_index=0)
#yaxis_index=1的意思是使用第1个坐标(坐标编号从0开始,0是主坐标,1是副坐标)
bar.overlap(line)
#line也画在柱状图上
bar.render("cr_base1.html")
以上是关于pyecharts应用2 柱状图的主要内容,如果未能解决你的问题,请参考以下文章