部分透明的散点图,但带有纯色条
Posted
技术标签:
【中文标题】部分透明的散点图,但带有纯色条【英文标题】:Partially transparent scatter plot, but with a solid color bar 【发布时间】:2011-05-27 14:18:25 【问题描述】:在 Python 中,使用 Matplotlib,如何简单地做一个透明的散点图(alpha
这是你得到的,from pylab import *; scatter(range(10), arange(0, 100, 10), c=range(10), alpha=0.2); color_bar = colorbar()
:
如何使颜色条不透明?
PS:我试过color_bar.set_alpha(1); draw()
,但这没有任何作用……
【问题讨论】:
但既然是散点图,那么颜色条会表示什么?是对应每个点的大小s
,还是对应每个点的颜色c
?
@Steve:颜色条会映射点的颜色。
【参考方案1】:
这是一个巨大而丑陋的 hack。但没有其他方法行得通。也许其他人可以改进。
fig1 = pylab.figure()
fig2 = pylab.figure()
ax1 = fig1.add_subplot(111)
ax2 = fig2.add_subplot(111)
ax1.scatter(range(10), range(10), c=range(10), alpha=0.2)
im = ax2.scatter(range(10), range(10), c=range(10), alpha=1.0)
fig1.colorbar(im, ax=ax1)
fig1.show()
【讨论】:
+1:有趣的想法!一个缺点是,当调用pyplot.show()
时,您会得到一个额外的数字(可以说,这可能会被破坏……)。
确实,它创建了一个新图形。这确实是一个“最后的手段”解决方案。 :-)【参考方案2】:
好的,我找到了一种方法,看起来比较干净:(使用问题中的ColorBar
对象)
color_bar.set_alpha(1)
color_bar.draw_all()
# pylab.draw() or pyplot.draw() might be necessary
如果能确认这是最可靠的方法,那就太好了! :)
【讨论】:
如果我不想要颜色条标签怎么办?即使我设置了color_bar.ax.set_yticklabels([])
,draw_all()
也会显示标签。
我不知道该怎么做...我尝试先清除颜色条轴 (color_bar.ax.cla()
),但随后使用 draw_all()
再次绘制颜色条失败。
附带说明,如果您出于任何特定原因(例如自定义标签等)不想致电draw_all()
,也可以使用cbar.solids.set(alpha=1)
。以上是关于部分透明的散点图,但带有纯色条的主要内容,如果未能解决你的问题,请参考以下文章