技巧 | Pyecharts自定义图表水印

简介: 技巧 | Pyecharts自定义图表水印

大家好,我是欧K。

本期给大家介绍pyecharts绘制图表时如何设置“水印”,主要涉及水印的大小,位置,颜色,格式等等希望对你有所帮助。


1. 导入模块

import itertools
import random
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

注:itertools包主要用于用于水印位置的笛卡尔积计算


2. 水印样式/数量

2.1 设置水印样式

def graphics(pos,idx=6):
    return opts.GraphicGroup(
                graphic_item=opts.GraphicItem(
                    rotation=JsCode('Math.PI / 4'),
                    left=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="公众号:Python当打之年",
                            font=f"bold {idx*3}px Microsoft YaHei",
                            graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(
                                fill="#808080"
                            ),
                        ),
                    ),
                ],
            )


rotation:旋转角度left/top:距离左侧和顶部的距离

fill:水印颜色

2.2 设置水印数量及相对位置

nums = 4
left_pos = [pos for pos in range(0, 100, int(100/nums))]
left_pos = [pos for pos in left_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(left_pos,top_pos)]
nums:水印行列为4*4,可自行设置


3. 生成水印

3.1 基本水印

# 基本水印
graphics_lst = [graphics(i) for i in pos_tur]
c = (
    Bar(init_opts=opts.InitOpts(width='900px', height='600px'))
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title=""),
        graphic_opts=graphics_lst,
    )
)
c.render_notebook()

效果:

3.2 字体逐渐增大

# 字体逐渐增大
graphics_lst = [graphics(item,idx) for idx,item in enumerate(pos_tur)]

效果:


3.3 间隔方向

# 间隔反向
rotation=JsCode('Math.PI / -4' if (idx % 2) else 'Math.PI / 4')



3.4 设置颜色

graphic_basicstyle_opts=opts.GraphicBasicStyleOpts(fill=random.choice(colors) )


效果1:

效果2:

效果3:

完。


END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道

相关文章
ts中interface和type的区别
ts中interface和type的区别
1155 61
|
存储 资源调度 JavaScript
一文带你了解PNPM以及 npm,yarn,pnpm区别
一文带你了解PNPM以及 npm,yarn,pnpm区别
1077 9
|
关系型数据库 MySQL 数据库
在 Postgres 中使用 Insert Into Ignore
【8月更文挑战第11天】
994 0
宝塔面板报404
阿里云服务器安装宝塔面板后,通过浏览器管理时报404错误。解决步骤:1. 远程连接服务器,检查面板运行状态,使用命令 `ps -ef | grep panel`;2. 确认访问入口正确,使用命令 `bt 14`;3. 联系官网客服寻求帮助。
1208 1
|
数据可视化 JavaScript
Vue3项目使用G6可视化组件实现一个树形机构图
在Vue 3项目中使用G6可视化组件库实现树形机构图的构建和展示。
3606 1
Vue3项目使用G6可视化组件实现一个树形机构图
|
负载均衡 网络协议 安全
DPDK用户态协议栈-KNI
DPDK用户态协议栈-KNI
|
JavaScript UED
惊艳!Vue 3 中使用 Suspense 实现异步组件加载,用户体验 大大大大大 提升!!
惊艳!Vue 3 中使用 Suspense 实现异步组件加载,用户体验 大大大大大 提升!!
|
Java 测试技术 开发者
Python中的内存陷阱:如何有效避免内存泄漏
Python开发中,内存泄漏影响性能,垃圾回收机制不总能解决。常见原因包括循环引用、静态变量和大型数据结构未清空。使用`weakref`处理循环引用,避免类属性滥用,及时清理数据结构。利用`gc`模块检测泄漏,启用`with`管理资源,使用弱引用,定期审查和测试代码,遵循内存管理最佳实践。【6月更文挑战第15天】
632 4
|
前端开发 JavaScript CDN
前端实现打字机的效果 -- typed库的使用
typed.js是一款轻量级JavaScript插件,模拟打字机效果,用于网页文本的动画输入。特点是易用、高度可配置,支持多种动画模式且无依赖。配置包括字符串、速度、显示延迟、循环选项等。安装可通过NPM或CDN。使用时在HTML中添加`<span>`标签,然后在JS中实例化Typed对象。丰富的回调函数可用于自定义行为。适用于展示性和个人博客网站,增加互动性。尝试不同配置,创建独特动态文本效果。
1013 0
|
数据采集 JavaScript 前端开发
如何判断一个网站是否采取了反爬虫措施
通过观察请求响应、分析请求频率限制和检测JavaScript动态加载来初步判断网站是否使用反爬虫措施。使用Python `requests` 发送请求并检查响应头和内容,寻找验证码、限制信息。尝试短时间内多次请求,看是否被限制。使用Selenium模拟浏览器行为,获取动态加载内容。注意,这些方法仅为初步判断,实际可能需更深入分析,并确保爬取行为合法合规。

热门文章

最新文章