部分透明的散点图,但带有纯色条

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)

以上是关于部分透明的散点图,但带有纯色条的主要内容,如果未能解决你的问题,请参考以下文章

带有分类标记的行/列的散点图 Pandas DataFrame

是否可以通过高度图绘制带有正方形符号的散点图

带有标记数据的散点图,与标签相关的标记

R语言使用ggplot2绘制带有边缘直方图的散点图实战

带有 ggplot2 的散点图按 r 中的特定日期间隔着色

Python数据可视化之绘制带有最佳拟合线的散点图(图文并茂版!!!)