本章我们学习在Pyecharts中直方图(Bar)的使用。直方图通用应用于表现不同类别数据的的对比分析。
直方图
我们现在有一组数据,其中x_data
为手机品牌,y_data
为对应手机品牌2024年全球销量数据,单位为百万。
# 示例数据,2024年全球手机品价销量数据
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
在Pyecharts中绘制直方图,首先我们需要引入我们需要的图表,可以通过如下代码:
from pyecharts.charts import Bar
或者通过如下语句会引入Pyecharts中所有图表的模块,如果你的脚本中使用图表类型较多,可以采用如下的方式
from pyecharts.charts import *
在引入之后我们需要做的便是新建一个图表实例,然后将我们的x_data
,y_data
添加至图表中,在直角坐标系图表中,都是采用add_xaxis
,add_yaxis
两个方法分别来添加数据。
在add_yaxis
中有两个必传的参数,一个是y_axis
是我们要传的数据,另一个参数series_name
为系列名称。
from pyecharts.charts import Bar
# 新建一个图表命名为chart
chart = Bar()
# 添加数据
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="销量", y_axis=y_data)
在Pyecharts中都提供了默认配置,在不做任何配置的情况下,我们的图表就已经完成了,便可以通过.render_notebook()
将图表渲染至我们的notebook中了。
from pyecharts.charts import Bar
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="销量", y_axis=y_data)
chart.render_notebook()
效果如下
如果是在非notebool的环境中,我们需要将.render_notebook()
换成.render()
,.render()
会在本地生成一个html文件,以pycharm为例:
如果用多个系列我们可以通过.add_yaxis
依次添加
from pyecharts.charts import Bar
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data_2024 = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
y_data_2023 = [234.3, 226.7, 146.0, 94.9, 103.4, 358.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="2024年销量", y_axis=y_data_2024)
chart.add_yaxis(series_name="2023年销量", y_axis=y_data_2023)
chart.render_notebook()
常用配置
柱子宽度
在直方图中我们有两种方式来设置柱子宽度:
bar_width
一个是通过参数bar_width
直接设置,支持绝对值如40或者百分比 如40%;
from pyecharts.charts import Bar
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data_2024 = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
y_data_2023 = [234.3, 226.7, 146.0, 94.9, 103.4, 358.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="2024年销量", y_axis=y_data_2024, bar_width=10)
chart.add_yaxis(series_name="2023年销量", y_axis=y_data_2023, bar_width="60%")
chart.render_notebook()
效果如下:
gap / category_gap
- 另一种是通过设置柱子之间间隔大小来间接控制柱子的宽度,这其中又会包含两个参数,一个是
gap
用于设置不同系列之间柱子的间隔,另一个参数category_gap
用于设置同一系列之间柱子间隔的大小,接受的数据为百分比格式,如40%;
from pyecharts.charts import Bar
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data_2024 = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
y_data_2023 = [234.3, 226.7, 146.0, 94.9, 103.4, 358.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="2024年销量", y_axis=y_data_2024)
chart.add_yaxis(series_name="2023年销量", y_axis=y_data_2023, gap='10%', category_gap='30%')
chart.render_notebook()
效果如下:
这里其实会更推荐大家采用第二种方式来进行配置,能配置的效果更多一些,也不会影响整体的布局。
另外一个小彩蛋,当我们设置gap
为-100%时,可以实现重叠的效果,在有些复杂场景的图表样式配置时,会用到这种玩法。
from pyecharts.charts import Bar
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data_2024 = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
y_data_2023 = [234.3, 226.7, 146.0, 94.9, 103.4, 358.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="2024年销量", y_axis=y_data_2024)
chart.add_yaxis(series_name="2023年销量", y_axis=y_data_2023, gap='-100%', category_gap='30%')
chart.render_notebook()
堆叠效果
当我们需要将多系列柱子进行堆叠展示时,可以使用参数stack
,当图表中stack
参数值一样的系列便会进行堆叠展示,示例如下:
from pyecharts.charts import Bar
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data_2024 = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
y_data_2023 = [234.3, 226.7, 146.0, 94.9, 103.4, 358.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="2024年销量", y_axis=y_data_2024, stack='1')
chart.add_yaxis(series_name="2023年销量", y_axis=y_data_2023, stack='1')
chart.render_notebook()
效果如下:
标签
标签即显示在我们图表图形之上的文本,接下来我们学习两种常见的场景:
标签不显示
我们图表中标签默认都是显示的,当我们需要关闭标签显示时可通过label_opts=opts.LabelOpts(is_show=False)
来实现,具体代码如下:
from pyecharts.charts import Bar
import pyecharts.options as opts
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data_2024 = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
y_data_2023 = [234.3, 226.7, 146.0, 94.9, 103.4, 358.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="2024年销量", y_axis=y_data_2024, stack='1', label_opts=opts.LabelOpts(is_show=False))
chart.add_yaxis(series_name="2023年销量", y_axis=y_data_2023, stack='2', label_opts=opts.LabelOpts(is_show=False))
chart.render_notebook()
效果如下:
标签位置
如下修改标签显示位置可以通过label_opts=opts.LabelOpts(position='top')
来实现,position可接受的参数值有:
‘top’,‘left’,‘right’,‘bottom’,‘inside’,‘insideLeft’,‘insideRight’,‘insideTop’,‘insideBottom’
‘insideTopLeft’,'insideBottomLeft‘
‘insideTopRight’,‘insideBottomRight’
具体代码如下:
from pyecharts.charts import Bar
import pyecharts.options as opts
x_data = ['Apple', 'Samsung', 'Xiaomi', 'Transsion', 'Oppo', 'Others']
y_data_2024 = [232.1, 223.4, 168.5, 106.9, 104.8, 402.9]
y_data_2023 = [234.3, 226.7, 146.0, 94.9, 103.4, 358.9]
chart = Bar()
chart.add_xaxis(x_data)
chart.add_yaxis(series_name="2024年销量", y_axis=y_data_2024, stack='1', label_opts=opts.LabelOpts(position='insideTop'))
chart.add_yaxis(series_name="2023年销量", y_axis=y_data_2023, stack='2', label_opts=opts.LabelOpts(position='top'))
chart.render_notebook()
标签:Bar,add,chart,2024,直方图,2023,Pyecharts,data
From: https://blog.csdn.net/qq_27484665/article/details/145243275