我想画一个标记(一个星星)与虚线边框线,而不是一个坚实的边界。在matplotlib中有没有办法做到这一点?下面是一个简单的代码,它绘制了一个带有实心边框的标记:
plot([1],[1],marker=(5,1,0),markersize=30,mfc='gold',mec='k',mew=1)
字符串提前感谢您的帮助!
bxpogfeg1#
我用scatter来实现
scatter
import matplotlib.pyplot as plt plt.gcf().set_size_inches(6,4) plt.scatter(0.5, 0, marker='*', s=1000, facecolors='y', edgecolors='b') plt.scatter(1.5, 0, marker='*',s=1000, facecolors='y', edgecolors='b',linestyle='--') plt.xlim(0,2) plt.show()
字符串
的数据
lztngnrs2#
一种“DIY”方法。1.画一个星星。1.画一些没有白色标记的圆圈。它将覆盖星星边界。所以星星看起来像虚线。1.用金色填充星星,但没有边框。代码看起来像这样:
import matplotlib.pyplot as plt plt.plot([1], [1], marker=(5, 1, 0), markersize=30, mfc='none', mec='k', mew=1) for i in range(4): plt.plot([1], [1], marker='o', markersize=30-5*i, mfc='none', mec='w', mew=1) plt.plot([1], [1], marker=(5, 1, 0), markersize=30, mfc='gold', mec='k', mew=0) plt.show()
字符串结果图如下所示:x1c 0d1x的数据有点奇怪。但它有效!
1hdlvixo3#
注意!**由于某种原因,这个响应被否决了,而示例仍然有效(至少对于Python 2.7.15rc1和Python 3.6.9,当我可以访问新版本时,我会用它们来测试)。
Python 2.7.15rc1
Python 3.6.9
但是!绘图必须保存为*.eps,保存为*.png不起作用-我不知道为什么。也许是渲染的东西..?我验证了*.eps文件,在gimp中打开它,打开的方块内没有线条,所以文件似乎是正确的。
*.eps
*.png
gimp
好吧,我有完全相反的问题,即,我想用实线绘制标记(而不是虚线,虚线等)。如果你传递一个linestyle到plot,它应该(不幸的是)以传递的linestyle的样式绘制标记边缘。最小工作示例:
linestyle
plot
import matplotlib.pyplot as plt x = [0, 1, 2, 3, 4, 5]; y = [0, 1, 4, 9, 16, 25]; plt.plot(x, y, label='y = x^2', linestyle=':', marker='s', color='r', mec='r', markersize=10, mfc=(1,1,1,0.0) ); plt.legend(loc='best', ncol=1, fontsize=13); plt.savefig('/tmp/test.eps', format='eps', dpi=400, bbox_inches='tight');
字符串是的,我知道,Python中没有分号。:)这很有趣,但是标记在plt.show()之后不可见--需要保存整个情节。如果你想恢复实心标记,只需将mfc(我假设是alpha通道)中的最后一个值更改为0.0001。这允许保持标记物实心但仍然“几乎”透明。
plt.show()
mfc
0.0001
3条答案
按热度按时间bxpogfeg1#
我用
scatter
来实现字符串
的数据
lztngnrs2#
一种“DIY”方法。
1.画一个星星。
1.画一些没有白色标记的圆圈。它将覆盖星星边界。所以星星看起来像虚线。
1.用金色填充星星,但没有边框。
代码看起来像这样:
字符串
结果图如下所示:
x1c 0d1x的数据
有点奇怪。但它有效!
1hdlvixo3#
注意!**由于某种原因,这个响应被否决了,而示例仍然有效(至少对于
Python 2.7.15rc1
和Python 3.6.9
,当我可以访问新版本时,我会用它们来测试)。但是!绘图必须保存为
*.eps
,保存为*.png
不起作用-我不知道为什么。也许是渲染的东西..?我验证了*.eps
文件,在gimp
中打开它,打开的方块内没有线条,所以文件似乎是正确的。好吧,我有完全相反的问题,即,我想用实线绘制标记(而不是虚线,虚线等)。如果你传递一个
linestyle
到plot
,它应该(不幸的是)以传递的linestyle
的样式绘制标记边缘。最小工作示例:字符串
是的,我知道,Python中没有分号。:)这很有趣,但是标记在
plt.show()
之后不可见--需要保存整个情节。如果你想恢复实心标记,只需将mfc
(我假设是alpha通道)中的最后一个值更改为0.0001
。这允许保持标记物实心但仍然“几乎”透明。