csv 使用低分辨率曲线绘图

rseugnpd  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(96)

我的问题要求是用低分辨率的曲线重新绘制一个图形。如下图所示:

有没有一种方法可以用matplotlib库或任何图像处理解决方案来实现?目前matplotlib正在生成具有非常高平滑度的线条,如下所示:

下面是我使用的绘图函数:

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

Note: Low resolution data curve only

6rqinv9w

6rqinv9w1#

您可以通过在调用plt.plotax.plot时将antialiased kwarg更改为False来接近此效果,这将控制线条是否平滑。考虑以下情况:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5, 5)

y = x**3

fig, ax = plt.subplots()

ax.plot(x, y, 'b-', lw=1, antialiased=True, label='antialiased=True')
ax.plot(x, y+10, 'k-', lw=1, antialiased=False, label='antialiased=False')

ax.legend()

plt.savefig('antialiased.png', dpi=100)

相关问题