柱状图/条形图(Bar)
柱状/条形图,通过柱形的高度/条形的宽度来表现数据的大小。
展示多个分类的数据变化和同类别各变量之间的比较情况。
- 适用:对比分类数据。
- 局限:分类过多则无法展示数据特点。
- 相似图表:
- 堆积柱状图。比较同类别各变量和不同类别变量总和差异。
- 百分比堆积柱状图。适合展示同类别的每个变量的比例。
# 导入柱状图类
from pyecharts import Bar
attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
v1 = [23.0, 44.9, 57.0, 23.2, 25.6, 46.7, 35.6, 62.2, 32.6, 20.0, 36.4, 3.3]
bar = Bar("Sales of XPS in 2017(million $)")
bar.add("XPS", attr, v1)
bar
<div id="b43aec201a5a4a4986a28f23927294ec" style="width:800px;height:400px;"></div>
# 导入柱状图类
from pyecharts import Bar
attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
v1 = [23.0, 44.9, 57.0, 23.2, 25.6, 46.7, 35.6, 62.2, 32.6, 20.0, 36.4, 33.3]
v2 = [22.6, 45.9, 59.0, 26.4, 28.7, 50.7, 75.6, 82.2, 48.7, 18.8, 36.0, 2.3]
bar = Bar("Bar chart", "Sales of XPS and Alienware in 2017(million $)")
bar.add("XPS", attr, v1, mark_line=["average"], mark_point=["max", "min"])
bar.add("Alienware", attr, v2, mark_line=["average"], mark_point=["max", "min"])
bar.render(path='Bar charts - Sales of XPS and Alienware in 2017(million $).html')
bar
<div id="6eb2a90ed5cb440ab61357311127095e" style="width:800px;height:400px;"></div>
add(name, x_axis, y_axis,
is_stack=False,
bar_category_gap=‘20%’, **kwargs)
name -> str
图例名称
x_axis -> list
x 坐标轴数据
y_axis -> list
y 坐标轴数据
is_stack -> bool
数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置
bar_category_gap -> int/str
类目轴的柱状距离,当设置为 0 时柱状是紧挨着(直方图类型),默认为 ‘20%’
# 导入柱状图类
from pyecharts import Bar
attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
v1 = [23.0, 44.9, 57.0, 23.2, 25.6, 46.7, 35.6, 62.2, 32.6, 20.0, 36.4, 3.3]
v2 = [22.6, 45.9, 59.0, 26.4, 28.7, 50.7, 75.6, 82.2, 48.7, 18.8, 36.0, 2.3]
bar = Bar("Bar chart", "Sales of XPS and Alienware in 2017(million $)")
bar.add("XPS", attr, v1, mark_line=["average"], is_stack=True)
bar.add("Alienware", attr, v2, mark_line=["average"], is_stack=True)
bar.render(path='Bar charts - Sales of XPS and Alienware in 2017(million $).html')
bar
<div id="e72e9c19bd2d4fd59712a22a5804618f" style="width:800px;height:400px;"></div>
当我们类目名称比较长的时候,我们会做条形图
bar = Bar("x 轴和 y 轴交换")
bar.add("商家A", attr, v1)
bar.add("商家B", attr, v2, is_convert=True)
bar
<div id="9f1f877345da42f08943075420052ae0" style="width:800px;height:400px;"></div>
import random
attr = ["{}天".format(i) for i in range(30)]
v1 = [random.randint(1, 30) for _ in range(30)]
bar = Bar("Bar - datazoom - slider 示例", width=1000)
bar.add("", attr, v1, is_label_show=True, is_datazoom_show=True)
bar
<div id="25007f870ee0456e9bf36950aabd1c06" style="width:1000px;height:400px;"></div>
瀑布图
- 适用场景:采用绝对值与相对值结合的方式,适用于表达数个特定数值之间的数量变化关系,最终展示一个累计值。
- 优势:展示两个数据点之间的演变过程,还可以展示数据是如何累计的。
- 劣势:没有柱状图、条形图的使用场景多。
from pyecharts import Bar
attr = ['IOS','Mac OS x','Android','Window 7', 'Window 8','Window 10','累计值']
v1 = [0, 100, 300, 650, 1450, 1650, 0]
v2 = [100, 200, 350, 800, 200, 200, 1850]
bar = Bar("过去一周用户操作系统偏好","瀑布图")
# 利用第一个 add() 图例的颜色为透明,即 'rgba(0,0,0,0)',并且设置 is_stack 标志为 True
bar.add("", attr, v1, label_color=['rgba(0,0,0,0)'], is_stack=True)
bar.add("", attr, v2, is_label_show=True, is_stack=True, label_pos='inside')
bar
<div id="5b372d4dcba849599cd982c0c25598ef" style="width:800px;height:400px;"></div>
直方图
import pandas as pd
import numpy as np
ages = np.random.normal(10,1,size=10000)
bins = np.arange(6,14,0.1) # bins 必须单调递增
# 以bins每个元素做分割点,分箱
cats = pd.cut(ages, bins)
data = pd.value_counts(cats).sort_index()
min(ages),max(ages)
(6.307831760532157, 13.605225306256697)
# 导入柱状图类
from pyecharts import Bar
bar = Bar("直方图")
bar.add("", data.index, data.values, bar_category_gap=0)
bar
<div id="2a6535c5b883495ca7dcba48ac1e9d60" style="width:800px;height:400px;"></div>