分享一个Pyecharts中非常重要的组件,可以大大提高绘制图表的效率

499cdba3af9267e7e837c116cadbac32.png

有时候自己花了许多时间与精力绘制的图表到头来被别人盗用是一件很让人感到郁闷的事情,今天小编就来分享pyecharts库当中一个知道的人不多的组件,能够帮助我们在自己绘制的图表上面加上水印或者logo,这样子自己绘制的图表就不会被别人给盗用了,更好地保护自己的劳动成果。

72124f5e776ab190ef5c32a842acb1f7.png

74aa3062fd60e9918d19817c408e967f.png

图片logo

pyecharts当中的Graphic组件主要用于已经绘制的图表增添图片作为背景logo,或者自定义文字来作为图表的水印,我们来看一个简单的例子,代码如下

c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="直方图 + 图片logo示例"),
        graphic_opts=[
            opts.GraphicImage(
                graphic_item=opts.GraphicItem(
                    id_="logo", right=20, top=20, z=-10, bounding="raw", origin=[75, 75]
                ),
                graphic_imagestyle_opts=opts.GraphicImageStyleOpts(
                    image="https://user-images.githubusercontent.com/19553554/71825144-2d568180-30d6-11ea-8ee0-63c849cfd934.png",
                    width=150,
                    height=150,
                    opacity=0.5,
                ),
            )
        ],
    )
    .render("graphic_image_test.html")
)

6ed691dc5b76705fc5137c46a22eb947.png

可以看到绘制的直方图的图表右上角有图片logo,同时我们也能看到参数如“width”以及“height”等等用来设置图片的高度与宽度,同时参数“right”“top”用来调整图片的位置的,读者可以自己私底下自己去练习,除了引用网上的图片之外,我们也可以使用本地的图片来作为logo,代码如下

c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="直方图 + 图片logo示例"),
        graphic_opts=[
            opts.GraphicImage(
                graphic_item=opts.GraphicItem(
                    id_="logo", right=20, top=20, z=-10, bounding="raw", origin=[75, 75]
                ),
                graphic_imagestyle_opts=opts.GraphicImageStyleOpts(
                    image="图片路径//python1.png",
                    width=150,
                    height=150,
                    opacity=0.5,
                ),
            )
        ],
    )
    .render("graphic_image_test.html")
)

出来的结果如下图所示

fd09a4b2b2fe31ff29a134a9ee10816e.png

1e9a277f80789f06e3852fb024d71e1a.png

水印logo

我们也可以添加文字来制作logo,代码如下

c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="直方图 + 水印logo示例"),
        graphic_opts=["代码太多了,写不下了,具体想看源码的,后台发送“pyecharts水印”"]
    )
    .render("graphic_rect_bar_test.html")
)

39a399cc8e3aa8a6dfdfcf458de0828c.png

出来的结果如下,我们可以看到在图片的右下角的地方有文字“关于数据分析与可视化”作为水印logo,为此我们也可以批量的生成文字水印,不过会影响到图表的整体的美观程度,代码如下

nums = 3
right_pos = [pos for pos in range(0, 90, int(90/nums))]
right_pos = [pos for pos in right_pos]
top_pos = [pos for pos in range(0, 90, int(90/nums))]
top_pos = [pos for pos in top_pos]
pos_tur = [item for item in itertools.product(right_pos,top_pos)]


def graphics(pos):
    return opts.GraphicGroup(
                graphic_item=opts.GraphicItem(
                    rotation=100,
                    right=f'{pos[0]}%', top=f'{pos[1]}%', z=1),
                children=[
                    opts.GraphicText(
                        graphic_item=opts.GraphicItem(
                            left="center", top="middle", z=1
                        ),
                        graphic_textstyle_opts=opts.GraphicTextStyleOpts(
                            text="公众号:关于数据分析与可视化",
                            font=f"bold 15px Microsoft YaHei",
                            graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
                                fill="#05f7ef"
                            ),
                        ),
                    ),
                ],
            )
            
graphics_lst = [graphics(i) for i in pos_tur]
c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="直方图+批量水印示例"),
        graphic_opts=graphics_lst,
    )
)
c.render("watermark1.html")

2e41ef37a0a2e0566375a8a3c8c3cd65.png

我们可以将上面的代码拆开来一个一个看,首先

graphic_item=opts.GraphicItem(
    rotation=100,
    right=xxx%,
    top=xxx%,
    z=1),

这部分的代码主要来设定水印的位置旋转的角度等等,其次是

graphic_textstyle_opts=opts.GraphicTextStyleOpts(
    text="公众号:关于数据分析与可视化",
    font=f"bold 20px Microsoft YaHei",
    graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
        fill="#05f7ef"
    ),
),

text”部分表示的是水印的文字内容,而“font”代表的明显是字体以及字体大小咯,然后“fill”代表的是文字的颜色,读者可以空的时候自己调试看看,而代码

nums = 3
right_pos = [pos for pos in range(0, 90, int(90/nums))]
right_pos = [pos for pos in right_pos]
top_pos = [pos for pos in range(0, 90, int(90/nums))]
top_pos = [pos for pos in top_pos]
pos_tur = [item for item in itertools.product(right_pos,top_pos)]

这部分的代码表示的是文字logo生成的数量,要是我们将“nums”改成5,那么就会生成更多的文字水印,如下图,进一步影响图表的美观程度,估计有密集恐惧症的读者会些许感觉到不适,这个由读者自己来调节,想要源码的读者后台发送“pyecharts水印”即可获取哦

nums = 5
right_pos = [pos for pos in range(0, 100, int(100/nums))]
right_pos = [pos for pos in right_pos]
top_pos = [pos for pos in range(0, 100, int(100/nums))]
top_pos = [pos for pos in top_pos]
pos_tur = [item for item in itertools.product(right_pos,top_pos)]

e003b9dd8c26e293c6d467def0b83ef9.png

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值