如何在Seaborn折线图上添加PNG格式的水印图片
Seaborn线图添加PNG水印完整实现流程
第一步:导入额外依赖库
在你现有代码的导入部分新增以下内容:
from PIL import Image from matplotlib.offsetbox import OffsetImage, AnchoredOffsetbox
第二步:在原有绘图代码后追加水印挂载逻辑
你原有代码不需要修改,直接在后面加以下内容即可:
# 读取PNG水印文件,替换为你自己的水印文件路径 watermark_img = Image.open("你的水印文件路径.png") # 调整水印透明度,0为完全透明,1为完全不透明,建议设0.15-0.3避免遮挡折线 watermark_img.putalpha(int(255 * 0.2)) # 配置水印缩放比例,根据你的画布大小调整数值 imagebox = OffsetImage(watermark_img, zoom=0.5) # 设置水印位置,可选参数:center/upper left/upper right/lower left/lower right等 ab = AnchoredOffsetbox(loc='center', child=imagebox, frameon=False, borderpad=0) # 把水印添加到当前轴域 axes.add_artist(ab) # 最后正常显示或保存图片即可 plt.show() # 保存的时候要加dpi参数保证清晰度 # plt.savefig("折线图.png", dpi=300, facecolor=axes.get_facecolor(), bbox_inches='tight')
完整可运行代码整合
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd from PIL import Image from matplotlib.offsetbox import OffsetImage, AnchoredOffsetbox # --------------- 你的原有绘图逻辑 --------------- # 这里替换为你自己的df数据加载逻辑 # df = pd.read_csv("你的数据文件.csv") s = sns.lineplot(data=df[['eth-in','eth-out']], dashes=False,) plt.tick_params(axis='y', colors='white') plt.tick_params(axis='x', colors='white') plt.xlabel("Block Signed Date",color='white') plt.ylabel("Amount",color='white') axes = plt.gca() axes.yaxis.grid() # --------------- 原有绘图逻辑结束 --------------- # --------------- 新增水印逻辑 --------------- # 读取PNG水印文件,替换为你自己的水印文件路径 watermark_img = Image.open("你的水印文件路径.png") # 调整水印透明度 watermark_img.putalpha(int(255 * 0.2)) # 配置水印缩放比例 imagebox = OffsetImage(watermark_img, zoom=0.5) # 设置水印位置 ab = AnchoredOffsetbox(loc='center', child=imagebox, frameon=False, borderpad=0) axes.add_artist(ab) plt.show()
常用参数调整说明
- 透明度调整:修改
putalpha里的系数,数值越大水印越不透明 - 大小调整:修改
zoom参数,数值越大水印尺寸越大 - 位置调整:修改
loc参数,可选值对应画布的不同方位
内容的提问来源于stack exchange,提问作者Dude
相关产品推荐
相关产品推荐

