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

发布于 2024-10-08 14:11:47 字数 385 浏览 3 评论 0原文

在Python中,使用Matplotlib,如何简单地绘制具有透明度(alpha < 1)的散点图,但具有代表其颜色值的颜色条,但alpha = 1?

这是使用 from pylab import *; 得到的结果分散(范围(10),范围(0,100,10),c=范围(10),alpha=0.2); color_bar = colorbar():

alt text

如何使颜色条不透明?

PS:我尝试了color_bar.set_alpha(1); draw(),但这没有做任何事情......

In Python, with Matplotlib, how to simply do a scatter plot with transparency (alpha < 1), but with a color bar that represents their color value, but has alpha = 1?

Here is what one gets, with from pylab import *; scatter(range(10), arange(0, 100, 10), c=range(10), alpha=0.2); color_bar = colorbar():

alt text

How can the color bar be made non-transparent?

PS: I tried color_bar.set_alpha(1); draw(), but this did not do anything…

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

惯饮孤独 2024-10-15 14:11:47

好吧,我找到了一种方法,看起来相对干净:(使用问题中的 ColorBar 对象)

color_bar.set_alpha(1)
color_bar.draw_all()
# pylab.draw() or pyplot.draw() might be necessary

不过,如果能够确认这是最可靠的方法,那就太好了! :)

Alright, I found one way to do it, that looks relatively clean: (using the ColorBar object from the question)

color_bar.set_alpha(1)
color_bar.draw_all()
# pylab.draw() or pyplot.draw() might be necessary

It would be great to get a confirmation that this is the most robust way to proceed, though! :)

£烟消云散 2024-10-15 14:11:47

这是一个巨大而丑陋的黑客行为。但除此之外别无他法。也许其他人可以改进。

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()

替代文字

This is a huge, ugly hack. But no other way would work. Maybe someone else can improve.

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()

alt text

残花月 2024-10-15 14:11:47

乔·金顿注释是执行此操作的正确方法,因为 matplotlib 6.0 已弃用 cbar.draw_all()

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
im = ax.scatter(range(10), range(10), c=range(10), alpha=0.2)
cbar = fig.colorbar(im, ax=ax)
cbar.solids.set(alpha=1)

弃用警告:
MatplotlibDeprecationWarning:draw_all 函数在 Matplotlib 3.6 中已弃用,并将在两个小版本后删除。使用Fig.draw_without_rendering()代替。 cbar.draw_all()

Joe Kington's comment is the correct way to do this as matplotlib 6.0 has deprecated cbar.draw_all():

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
im = ax.scatter(range(10), range(10), c=range(10), alpha=0.2)
cbar = fig.colorbar(im, ax=ax)
cbar.solids.set(alpha=1)

The deprecation warning:
MatplotlibDeprecationWarning: The draw_all function was deprecated in Matplotlib 3.6 and will be removed two minor releases later. Use fig.draw_without_rendering() instead. cbar.draw_all()

甜中书 2024-10-15 14:11:47

这对我有用:

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
p = plt.scatter(np.arange(10), np.arange(0,100,10), c=np.arange(10), alpha=1)
plt.colorbar()
p.set_alpha(0.2)
plt.show()

This worked for me:

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
p = plt.scatter(np.arange(10), np.arange(0,100,10), c=np.arange(10), alpha=1)
plt.colorbar()
p.set_alpha(0.2)
plt.show()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文