Pycharts 常用技巧(柱状图、条形图、折线图、堆叠图及多图组合) -进阶

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()
  • 显示
    在这里插入图片描述
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YouShouldKnowMe

别来这套

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值