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 中正确滚动+调整大小