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%B9

LegendOpts:图例配置项
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%B9

DataZoomOpts:区域缩放配置项
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 柱状图的主要内容,如果未能解决你的问题,请参考以下文章

PyEcharts 深入学习

如何使用pyecharts 1.9.0绘制柱状图仪表盘图3D图雷达图面积图等

Pythonpyecharts 数据可视化模块

Pythonpyecharts 数据可视化模块

Pythonpyecharts 数据可视化模块

Pythonpyecharts 数据可视化模块