You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib或图像处理方法绘制低分辨率曲线?

问题

需要重新绘制低分辨率风格的曲线(参考示例图),但当前使用Matplotlib绘制的曲线平滑度过高,询问是否可通过Matplotlib直接调整或图像处理方案实现目标,且最终仅保留低分辨率数据曲线。

提供的绘图代码:

import csv
import matplotlib.pyplot as plt

arr = []
with open('points.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    for row in csv_reader:
        x = float(row[0])
        y = float(row[1])
        arr.append([x, y])

data = list(arr)
plt.plot(*zip(*data), color='black', linewidth=0.5, alpha=1.0)
plt.savefig("report.png")

数据示例:

617,21.550045745097
617.25,21.4286797104602
617.5,21.3023081618079
617.75,21.1830623411815
618,21.0748879703542
解决方案

可以通过两种方式实现低分辨率曲线效果:

方法一:Matplotlib直接调整绘图参数

Matplotlib默认会对线条做抗锯齿处理导致曲线平滑,修改以下参数即可得到低分辨率风格:

  • 关闭抗锯齿:在plot函数中添加antialiased=False,让线条呈现原生锯齿边缘
    plt.plot(*zip(*data), color='black', linewidth=0.5, alpha=1.0, antialiased=False)
    
  • 降低保存DPI:设置savefig的dpi为低值,直接生成低分辨率图像,放大后会呈现像素块效果
    plt.savefig("report.png", dpi=30)
    
  • 阶梯状绘制:用drawstyle='steps'让曲线在相邻点之间以水平/垂直线段连接,更贴近像素化风格
    plt.plot(*zip(*data), color='black', linewidth=0.5, alpha=1.0, drawstyle='steps', antialiased=False)
    

方法二:图像处理后处理

先按原有代码生成平滑曲线,再通过图像工具转换为低分辨率风格:
以Python的PIL库为例:

from PIL import Image

# 读取原平滑曲线图片
img = Image.open("report.png")
# 先缩小到低分辨率尺寸,再用最近邻插值放大回原尺寸实现像素化
low_res_size = (img.width // 10, img.height // 10)
low_res_img = img.resize(low_res_size, Image.NEAREST).resize(img.size, Image.NEAREST)
# 保存低分辨率图片
low_res_img.save("low_res_report.png")

内容的提问来源于stack exchange,提问作者xPain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:45:09