文章目录
准备工作
1、安装库pyecharts
以下代码默认版本为1.x
pip install pyecharts
2、输出
本文主要用Jupyter Notebook进行操作,Jupyter Notebook 直接调用 render_notebook 随时随地渲染图表
.render_notebook()
也可输出html格式
.render("name.html")
3、导入所用相关库
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
opts:各种配置项
Bar:绘制柱状图
Faker:内置数据集
Faker数据集
Faker.choose()
Faker.values()
一、柱状图
简单实现柱状图
add_xaxis:添加x轴信息
add_yaxis:添加y轴信息包含系列名称,系列数据
set_global_opts:添加主标题与副标题
render_notebook():在Jupyter Notebook显示
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("系列1", Faker.values())
.add_yaxis("系列2", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
)
bar.render_notebook()
图片如下
以上是链式调用,如果不习惯链式调用可以单独调用,比如
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
bar.render_notebook()
都是可以的
二、堆积柱状图
堆积柱状图与柱状图不同的地方在于
add_yaxis下的stack参数.如果两个系列stack参数参数一致则就是堆叠放置
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("系列1", Faker.values(), stack="stack1")
.add_yaxis("系列1", Faker.values(), stack="stack1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆积柱状图"))
)
bar.render_notebook()
三、瀑布图
x_data = [f"11月{str(i)}日" for i in range(1, 12)]
y_total = [0, 900, 1245, 1530, 1376, 1376, 1511, 1689, 1856, 1495, 1292]
y_in = [900, 345, 393, "-", "-", 135, 178, 286, "-", "-", "-"]
y_out = ["-", "-", "-", 108, 154, "-", "-", "-", 119, 361, 203]
bar = (
Bar()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="",
y_axis=y_total,
stack="总量",
itemstyle_opts=opts.ItemStyleOpts(color="rgba(0,0,0,0)"),
)
.add_yaxis(series_name="收入", y_axis=y_in, stack="总量")
.add_yaxis(series_name="支出", y_axis=y_out, stack="总量")
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-瀑布图"))
)
bar.render_notebook()
y_total系列图形颜色设置为完全透明,然后与收入支出堆积叠放形成瀑布图
四、直方图
直方图与条形图的区别是柱之间的间隔,如果间隔为0那就可以称之为直方图
用参数category_gap就可以控制
此外还有一个参数Faker.rand_color():随机颜色,每次刷新都会出现不一样的颜色
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("系列1",Faker.days_values,color=Faker.rand_color(),category_gap=0,)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方图", subtitle="我是副标题"),
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
)
bar.render_notebook()
五、条形图
条形图与柱状图的区别就是x轴y轴旋转过来了.
用函数reversal_axis()就可以实现了
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("系列1", Faker.values())
.add_yaxis("系列2", Faker.values())
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-翻转 XY 轴"))
)
bar.render_notebook()
六、配置
1、主题配置
pyecharts提供多个主题颜色配置,即便是你不会配色也能制作出好看的图表啦
有 LIGHT、DARK、CHALK、ESSOS、INFOGRAPHIC、MACARONS、PURPLE_PASSION、ROMA、ROMANTIC、SHINE、VINTAGE、WALDEN、WESTEROS、WONDERLAND
下以DARK为例,其他的主题可以自己尝试一下哈
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
.add_xaxis(Faker.choose())
.add_yaxis("系列1", Faker.values())
.add_yaxis("系列2", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
)
bar.render_notebook()
2、区域缩放
type_为组件类型,默认为”slider”,可选 “inside”.这个两个区别可以自己尝试一下
bar = (
Bar()
.add_xaxis(Faker.days_attrs)
.add_yaxis("系列1", Faker.days_values,color=Faker.rand_color())
.add_yaxis("系列2", Faker.days_values,color=Faker.rand_color())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-区域缩放", subtitle="我是副标题"),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")])
)
bar.render_notebook()
y轴进行缩放需要加
orient="vertical"
bar = (
Bar()
.add_xaxis(Faker.days_attrs)
.add_yaxis("系列1", Faker.days_values,color=Faker.rand_color())
.add_yaxis("系列2", Faker.days_values,color=Faker.rand_color())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-区域缩放(slider-垂直)", subtitle="我是副标题"),
datazoom_opts=opts.DataZoomOpts(orient="vertical"))
)
bar.render_notebook()
3、标记线
自定义标记线
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("系列1", Faker.days_values,color=Faker.rand_color())
.add_yaxis("系列2", Faker.days_values,color=Faker.rand_color())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-自定义标记线", subtitle="我是副标题")
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=10, name="yAxis=10")])
)
)
bar.render_notebook()
在y=10的处设置标记线并命名yAxis=10
指定标记线
可以按照平均值、最大、最小进行设置标记线
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("系列1", Faker.values())
.add_yaxis("系列2", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkLine(指定类型)"))
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(
data=[
opts.MarkLineItem(type_="min", name="最小值"),
opts.MarkLineItem(type_="max", name="最大值"),
opts.MarkLineItem(type_="average", name="平均值"),
]
),
)
)
bar.render_notebook()
4、标记点
自定义标记点
symbol参数设置标记的图形
ECharts 提供的标记类型包括 ‘circle’, ‘rect’, ’roundRect’, ‘triangle’, ‘diamond’, ‘pin’, ‘arrow’, ‘none’
x, y = Faker.choose(), Faker.values()
bar = (
Bar()
.add_xaxis(x)
.add_yaxis(
"系列1",
y,
markpoint_opts=opts.MarkPointOpts(
data=[opts.MarkPointItem(name="自定义标记点", coord=[x[6], y[6]], value=y[6],symbol='arrow')]
),
)
.add_yaxis("系列2", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkPoint(自定义)"))
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
)
bar.render_notebook()
指定x的第7位系列1做标记,标记形式为箭头
指定类型标记点
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("系列1", Faker.values())
.add_yaxis("系列2", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkPoint(指定类型)"))
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False),
markpoint_opts=opts.MarkPointOpts(
data=[
opts.MarkPointItem(type_="max", name="最大值"),
opts.MarkPointItem(type_="min", name="最小值"),
opts.MarkPointItem(type_="average", name="平均值"),
]
),
)
)
bar.render_notebook()
用最大值最小值平均值做标记,默认标记
Original: https://blog.csdn.net/weixin_41867184/article/details/121606807
Author: 瓜瓜的小宝藏
Title: pyecharts系列之Bar的用法
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/693831/
转载文章受原作者版权保护。转载请注明原作者出处!