我使用matplotlib(png格式)生成附加图像。我想使用eps或pdf,但我发现,对于所有数据点,图形在屏幕上渲染的速度非常慢。除了绘制较少的数据之外,还有优化它以便加载更快吗?
答案 0 :(得分:3)
我认为你有三种选择:
正如您自己提到的,您可以减少积分。对于你在问题中显示的情节,我认为只绘制其他每一点都可以。
正如@tcaswell在评论中所说,你可以使用一条线代替点,这样可以提高效率。
你可以光栅化蓝点。 Matplotlib允许您有选择地栅格化单个艺术家,因此如果您将rasterized=True
传递给绘图命令,您将获得输出文件中点的位图版本。由于位图的分辨率,以有限缩放的价格加载会更快。 (请注意,绘图的轴和所有其他元素将保留为矢量图形和字体元素。)
答案 1 :(得分:1)
首先,如果你想在你的绘图中显示一个“趋势”,并考虑你正在绘制的x,y数组是“巨大的”,你可以将随机的子采样应用到你的x,y数组,作为一个分数你的数据:
import numpy as np
import matplotlib.pyplot as plt
fraction = 0.50
x_resampled = []
y_resampled = []
for k in range(0,len(x)):
if np.random.rand() < fraction:
x_resampled.append(x[k])
y_resampled.append(y[k])
plt.scatter(x_resampled,y_resampled , s=6)
plt.show()
其次,您是否考虑过在x轴上使用对数刻度来提高可见度?
答案 2 :(得分:0)