Python 绘图:如何让 matplotlib.pyplot 停止强制标记我的样式?

Posted

技术标签:

【中文标题】Python 绘图:如何让 matplotlib.pyplot 停止强制标记我的样式?【英文标题】:Python plotting: How can I make matplotlib.pyplot stop forcing the style of my markers? 【发布时间】:2010-10-07 08:52:52 【问题描述】:

我正在尝试使用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 中),然后我就失去了质量。如何保留文件的矢量性质并获得正确的格式?

【问题讨论】:

好吧,对于绘图点,CairoPlot 的主干版本具有 ScatterPlot 类。使用它您可以定义标记的半径,因此您可以将其设置为 1,因为它是最小的选项。你有什么特别的理由不使用 CairoPlot? 【参考方案1】:

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

【讨论】:

是的,这项工作有效。顺便说一句,我们做同样的工作。【参考方案2】:

为了美观的矢量化输出,不要使用'.' 标记样式。使用例如'o'(圆形)或's'(方形)(有关选项,请参阅help(plot))并将markersize 关键字参数设置为适当小的值,例如:

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于Python 绘图:如何让 matplotlib.pyplot 停止强制标记我的样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Matplotlib 图形在 Tkinter GUI 中正确滚动+调整大小

Python之神奇的绘图库matplotlib

如何使用 python/matplotlib 为 3d 绘图设置“相机位置”?

python数据分析工具 | matplotlib

使用matplotlib,pylab进行python绘图

如何使用 Python matplotlib 绘制具有 4 个象限的图形或绘图?