1 数据堆叠柱状图
- 代码
from pyecharts import options as opts
from pyecharts.charts import Bar
l1=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
l2=[100,200,300,400,500,400,300]
l3=[300,400,500,400,300,200,100]
bar = (
Bar()
.add_xaxis(l1)
.add_yaxis("l2", l2, stack="stack")
.add_yaxis("l3", l3, stack="stack")
.set_global_opts(title_opts=opts.TitleOpts(title="数据堆叠", subtitle="副标题"))
)
bar.render_notebook()
- 显示
2 柱状图和折线图合并
- 代码
import pyecharts.options as opts
from pyecharts.charts import Bar, Line
x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
bar = (
Bar(init_opts=opts.InitOpts(width="1000px", height="500px"))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="降水量",
y_axis=[
2.6,
5.9,
9.0,
26.4,
28.7,
70.7,
175.6,
182.2,
48.7,
18.8,
6.0,
2.3
],
label_opts=opts.LabelOpts(is_show=True),#是 True 否 False 显示标签
)
.set_global_opts(
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger="axis", axis_pointer_type="cross"
),
xaxis_opts=opts.AxisOpts(
type_="category",
axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
),
yaxis_opts=opts.AxisOpts(
name="水量",
type_="value",
min_=0,
max_=250,
interval=50,
axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
)
)
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="降水量",
yaxis_index=0,
y_axis=[2.6,5.9,9.0,26.4,28.7,70.7,175.6,182.2,48.7,18.8,6.0,2.3,],
label_opts=opts.LabelOpts(is_show=False),
)
)
bar.overlap(line).render_notebook()
#yaxis_opts=opts.AxisOpts()中可以设置纵坐标起止范围和间隔
- 显示
3 双纵坐标柱状图
- 代码
import pyecharts.options as opts
from pyecharts.charts import Bar, Line
x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
bar = (
Bar(init_opts=opts.InitOpts(width="1000px", height="600px"))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="蒸发量",
yaxis_index=0,
y_axis=[
2.0,
4.9,
7.0,
23.2,
25.6,
76.7,
135.6,
162.2,
32.6,
20.0,
6.4,
3.3,
],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="平均温度",
yaxis_index=1,
y_axis=[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
label_opts=opts.LabelOpts(is_show=False),
)
.extend_axis(
yaxis=opts.AxisOpts(
name="温度",
type_="value",
min_=0,
max_=25,
interval=5,
axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
)
)
.set_global_opts(
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger="axis", axis_pointer_type="cross"
),
xaxis_opts=opts.AxisOpts(
type_="category",
axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
),
yaxis_opts=opts.AxisOpts(
name="水量",
type_="value",
min_=0,
max_=250,
interval=50,
axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
)
)
bar.render_notebook()
#extend_axis:增加了以温度为刻度的纵坐标轴
#add_yaxis:yaxis_index=0表示该数据用第一个坐标轴,yaxis_index=1表示该数据用第二个坐标轴
- 显示
4 为柱状图添加背景图片
- 代码
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker
l2=[100,200,300,400,500,400,300]
l3=[300,400,500,400,300,200,100]
bar = (
Bar(
init_opts=opts.InitOpts(
bg_color={"type": "pattern", "image": JsCode("img"), "repeat": "no-repeat"}
)
)
.add_xaxis(Faker.choose())
.add_yaxis("商家A", l2)
.add_yaxis("商家B", l3)
.set_global_opts(
title_opts=opts.TitleOpts(
title="Bar-背景图基本示例",
subtitle="我是副标题",
title_textstyle_opts=opts.TextStyleOpts(color="white"),
)
)
)
bar.add_js_funcs(
"""
var img = new Image(); img.src = 'https://img2.tapimg.com/bbcode/images/c9ce1cb2861dca1eadc94ab73d351f84.jpg';
"""
)
bar.render_notebook()
#只需更改img.src中图片url地址即可更换背景 url地址需为绝对路径
5 为柱状图添加动画
- 代码
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
l1=[100,200,300,400,500,400,300]
l2=[300,400,500,400,300,200,100]
bar = (
Bar(
init_opts=opts.InitOpts(
animation_opts=opts.AnimationOpts(
animation_delay=2000, animation_easing="bounceIn"
)
)
)
.add_xaxis(Faker.choose())
.add_yaxis("商家A", l1)
.add_yaxis("商家B", l2)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-动画配置基本示例", subtitle="我是副标题"))
)
bar.render_notebook()
#animation_delay设置延迟时间
#animation_easing设置动画效果
- 显示
代码运行完成后会产生动图效果,为节约时间,此处只展示图片变化过程中的截图,若有需要请复制代码后用jupyter notebook 自行复制本代码后运行
- 展示-1
- 展示-2
- 展示-3
6 常用配置项综合运用
- 代码
from pyecharts import options as opts
from pyecharts.charts import Bar
l1=[
'星期一','星期二','星期三','星期四','星期五','星期六','星期日' #横坐标数据
]
l2=[10,20,30,40,50,60,70]#纵坐标数据1
l3=[90,80,70,60,50,40,30]#纵坐标数据2
bar = (
Bar(init_opts=opts.InitOpts(width="1000px", height="500px")) #init_opts 设置图片像素大小
.add_xaxis(l1)#横坐标
.add_yaxis("完成进度", l2,category_gap=10, stack="stack")#纵坐标1 图例名称,值,category_gap=0设置间隔 color='#FFFF00'设置柱状图颜色
.add_yaxis("未完成", l3,category_gap=10, stack="stack")#纵坐标2 stack="stack":数据堆叠,必须两组同时设置才可生效
.reversal_axis()#横向柱状图
.set_series_opts(#系列配置设置
# markline_opts=opts.MarkLineOpts( #标记-线 MarkLineOpts - MarkLineItem
# # markpoint_opts=opts.MarkPointOpts( #标记-点 MarkPointOpts - MarkPointItem
# data=[
# opts.MarkLineItem(type_="min", name="最小值"),
# opts.MarkLineItem(type_="max", name="最大值"),
# opts.MarkLineItem(type_="average", name="平均值"),
# ]
# ),
label_opts=opts.LabelOpts(
is_show=True, #是 True 否 False 显示数据标签
position="inside",#标签的位置 可选 'top','left','right','bottom','inside','insideLeft','insideRight'......
font_size=15,#文字的字体大小
color= '#FFF633',#文字的颜色
font_style = 'italic',#斜体,文字字体的风格,可选 'normal','italic','oblique'
font_weight = "bold",#文字字体的粗细 'normal','bold','bolder','lighter',None
font_family = 'Courier New',#font_family 字体 'Arial', 'Courier New', 'Microsoft YaHei(微软雅黑)' ,None ......
rotate = '0',# rotate 标签旋转 从 -90 度到 90 度。正值是逆时针
margin = 10,#刻度标签与轴线之间的距离 # 坐标轴刻度标签的显示间隔,在类目轴中有效。Union[Numeric, str, None]
# 默认会采用标签不重叠的策略间隔显示标签。
# 可以设置成 0 强制显示所有标签。
# 如果设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此类推。
# 可以用数值表示间隔的数据,也可以通过回调函数控制。回调函数格式如下:
# (index:number, value: string) => boolean
# 第一个参数是类目的 index,第二个值是类目名称,如果跳过则返回 false。
horizontal_align = 'center',#文字水平对齐方式,默认自动。可选:'left','center','right'
vertical_align = "middle",#文字垂直对齐方式,默认自动。可选:'top','middle','bottom'
)
)
.set_global_opts(#全局配置设置
title_opts=opts.TitleOpts(title="任务进度",subtitle="" ),#title 主标题 subtitle副标题
yaxis_opts=opts.AxisOpts(name="任务",axislabel_opts=opts.LabelOpts(formatter="{value} --"),),#Y轴标签 ,axislabel_opts 设置纵坐标数据后统一添加的值
xaxis_opts=opts.AxisOpts(name="进度(百分比)",axislabel_opts=opts.LabelOpts(rotate=-15)),#X轴标签 name:名称 ,rotate=-15:坐标轴旋转
datazoom_opts=opts.DataZoomOpts(type_="inside"),#区域缩放 inside 鼠标滚轮缩放,slider 滑块缩放
)
)
bar.render_notebook()
- 显示