14

我正在尝试使用matplotlib在 Python 中绘制一堆数据点(数千个),因此我需要每个标记都非常小且精确。如何获得最小最简单的标记?我使用这个命令来绘制我的数据:

 matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')

然后我可以查看它pl.show(),然后保存它。或者直接plt.savefig('filename.ps')在代码中使用保存。问题是这样的:当我pl.show()在 GUI 中查看文件时,它看起来很棒,带有小的黑色标记,但是当我从show()GUI 保存到文件或直接使用savefig然后查看ps我创建的文件时,它看起来不同!每个标记在其周围都有一个蓝色的小光环(好像它从每个点开始将它们与默认的蓝色线条连接起来,但没有)并且样式完全错误。为什么保存时会改变样式?如何阻止 python 强制标记的样式?是的,我已经查看了一些替代软件包,例如CairoPlot,但我现在想继续使用 matplotlib。

更新:事实证明,保存到 PNG 首先使颜色变好,但是当我想再次将其保存为.ps以后(以包含在 PDF 中)时,它会强制转换图像,然后我会失去质量。如何保留文件的矢量性质并获得正确的格式?

4

3 回答 3

20

对于漂亮的矢量化输出,不要使用'.'标记样式。使用例如'o'(circle) 或's'(square) (请参阅help(plot)选项)并将markersize关键字参数设置为适当小的值,例如:

plot(x, y, 'ko', markersize=2)
savefig('foo.ps')

那个'.'(点)产生不太好的结果可能被解释为matplotlib中的一个错误,但是,“点”在矢量图形格式中应该是什么意思?

于 2009-03-12T12:58:58.190 回答
10

你试过','点形状吗?它创建“像素”(小点,而不是形状)。

您也可以markersize使用这种形状的选项吗?

于 2009-08-08T09:57:43.330 回答
2

如果还没有,您应该尝试保存在光栅化引擎中——将其保存到 PNG 文件中,看看是否可以修复它。如果您需要矢量图,请尝试保存为 PDF 并使用外部实用程序进行转换。我以前也遇到过 PS 引擎的问题,这些问题通过使用 Agg 或 PDF 引擎保存并在外部转换得到解决。

于 2009-02-13T03:32:39.850 回答