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,浏览器效果如下图所示。

分析:
对于这个例子来说,下面 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,浏览器效果如下图所示。

分析:
由于这两种柱条共享 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,浏览器效果如下图所示。

分析:
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,浏览器效果如下图所示。

分析:
实现堆叠柱状图很简单,只需要将 stack 参数设置为 True 就可以了。对于这个例子来说,“裤子” 在 “上衣” 的上方,如果想要改变两者的位置,我们只需要改变两个 add_yaxis() 方法的先后顺序即可。
细心的小伙伴可能会发现,这个例子的动画效果体验并不是很好,我们还可以在 Bar() 中对 int_opts 参数进行配置来把动画关闭了。对于下面这一句代码,小伙伴们看不懂没关系,我们在下一节中会详细介绍。
# 关闭动画
bar = Bar(init_opts = opts.InitOpts(animation_opts=opts.AnimationOpts(animation=False)))
注意:学完本节之后,建议小伙伴们先去把后面的 “全局配置”、“系列设置” 以及 “其他设置” 这 3 章看完了,再去学习其他图表的绘制,这样可以把各种设置理解得更加透彻一些。
