Pyecharts 柱状图

Pyecharts 柱状图语法

在 Pyecharts 中,我们可以使用 Bar 这个模块来绘制一个柱状图。柱状图的主要作用是:展示数据的大小。

语法:

bar = Bar()
bar.add_xaxis(xaxis_data)
bar.add_yaxis(series_name, y_axis)

说明:

柱状图和折线图的语法是一样的,首先使用 Bar() 创建一个柱状图对象 bar,然后调用该对象下面的 add_xaxis() 方法来添加 x 轴数据,以及调用 add_yaxis() 方法来添加 y 轴数据。

示例 1:只有一种柱条

import pandas as pd
from pyecharts.charts import Bar

# 数据
data = [
    ['1月', 450],
    ['2月', 420],
    ['3月', 560],
    ['4月', 480],
    ['5月', 530],
    ['6月', 620]
]
df = pd.DataFrame(data, columns=['月份', '上衣'])

# 绘图
bar = Bar()
bar.add_xaxis(xaxis_data=list(df['月份']))
bar.add_yaxis(series_name='上衣', y_axis=list(df['上衣']))

# 渲染
bar.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts柱状图只有一种柱条

分析:

对于这个例子来说,下面 2 种方式是等价的。

# 方式1:分开调用
bar.add_xaxis(xaxis_data=list(df['月份']))
bar.add_yaxis(series_name='上衣', y_axis=list(df['上衣']))
bar.render()

# 方式2:链式调用
bar.add_xaxis(xaxis_data=list(df['月份'])).add_yaxis(series_name='上衣', y_axis=list(df['上衣'])).render()

示例 2:有多种柱条

import pandas as pd
from pyecharts.charts import Bar

# 数据
data = [
    ['1月', 450, 110],
    ['2月', 420, 220],
    ['3月', 560, 150],
    ['4月', 480, 310],
    ['5月', 530, 250],
    ['6月', 620, 160]
]
df = pd.DataFrame(data, columns=['月份', '上衣', '裤子'])

# 绘图
bar = Bar()
bar.add_xaxis(xaxis_data=list(df['月份']))
# 第1种柱条
bar.add_yaxis(series_name='上衣', y_axis=list(df['上衣']))
# 第2种柱条
bar.add_yaxis(series_name='裤子', y_axis=list(df['裤子']))

# 渲染
bar.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts柱状图有多种柱条

分析:

由于这两种柱条共享 x 轴数据,也就是说它们的 x 轴数据是一样的,所以我们只需要调用一次 add_xaxis() 方法就可以了。然后有多少种柱条,那么就调用多少次 add_yaxis() 方法。

在实际开发中,柱状图的使用频率比较高。某些情况下,基本的柱状图并不能满足实际需求。所以我们还得掌握一些高级柱状图的绘制,主要包括以下 2 种。

  • 横向柱状图(条形图)。
  • 堆叠柱状图。

Pyecharts 横向柱状图(条形图)

条形图可以看成是一个横向的柱状图。在 Pyecharts 中,我们可以使用 reversal_axis() 方法来改变柱状图的方向,从而实现一个条形图。

语法:

bar.reversal_axis()

说明:

bar 是一个柱状图对象,reversal_axis() 方法不需要参数。

示例 3:横向柱状图

import pandas as pd
from pyecharts.charts import Bar

# 数据
data = [
    ['1月', 450, 110],
    ['2月', 420, 220],
    ['3月', 560, 150],
    ['4月', 480, 310],
    ['5月', 530, 250],
    ['6月', 620, 160]
]
df = pd.DataFrame(data, columns=['月份', '上衣', '裤子'])

# 绘图
bar = Bar()
bar.add_xaxis(xaxis_data=list(df['月份']))
# 第1种柱条
bar.add_yaxis(series_name='上衣', y_axis=list(df['上衣']))
# 第2种柱条
bar.add_yaxis(series_name='裤子', y_axis=list(df['裤子']))
# 改变方向
bar.reversal_axis()

# 渲染
bar.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts横向柱状图(条形图)

分析:

reversal_axis() 方法会将 x 轴和 y 轴调换,这样柱状图就变成一个条形图了。

Pyecharts 堆叠柱状图

在 Pyecharts 中,我们可以使用 add_yaxis() 方法的 stack 参数来实现堆叠柱状图。stack 的取值是一个布尔值,默认值为 False。

示例 4:堆叠柱状图

import pandas as pd
from pyecharts.charts import Bar

# 数据
data = [
    ['1月', 450, 110],
    ['2月', 420, 220],
    ['3月', 560, 150],
    ['4月', 480, 310],
    ['5月', 530, 250],
    ['6月', 620, 160]
]
df = pd.DataFrame(data, columns=['月份', '上衣', '裤子'])

# 绘图
bar = Bar()
bar.add_xaxis(xaxis_data=list(df['月份']))
# 第1个柱状图
bar.add_yaxis(series_name='上衣', y_axis=list(df['上衣']), stack=True)
# 第2个柱状图
bar.add_yaxis(series_name='裤子', y_axis=list(df['裤子']), stack=True)

# 渲染
bar.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts堆叠柱状图

分析:

实现堆叠柱状图很简单,只需要将 stack 参数设置为 True 就可以了。对于这个例子来说,“裤子” 在 “上衣” 的上方,如果想要改变两者的位置,我们只需要改变两个 add_yaxis() 方法的先后顺序即可。

细心的小伙伴可能会发现,这个例子的动画效果体验并不是很好,我们还可以在 Bar() 中对 int_opts 参数进行配置来把动画关闭了。对于下面这一句代码,小伙伴们看不懂没关系,我们在下一节中会详细介绍。

# 关闭动画
bar = Bar(init_opts = opts.InitOpts(animation_opts=opts.AnimationOpts(animation=False)))

注意:学完本节之后,建议小伙伴们先去把后面的 “全局配置”、“系列设置” 以及 “其他设置” 这 3 章看完了,再去学习其他图表的绘制,这样可以把各种设置理解得更加透彻一些。

上一篇: Pyecharts 折线图

下一篇: Pyecharts 散点图

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号