gpt4 book ai didi

python-3.x - 如何在绘制散点图后修改其颜色图

转载 作者:行者123 更新时间:2023-12-03 18:18:15 40 4
gpt4 key购买 nike

例如,您可以使用 scatter(X, Y, c=..., cmap="rainbow") 将颜色图分配给散点图,但是有办法吗稍后修改颜色图?

我知道我们可以通过 set_color()set_alpha() 更改透明度和颜色,但我没有找到颜色图的等效项。解决方法是保存散点图的数据,将其删除,然后使用新参数再次 scatter() ,但这会很昂贵。这是一个问题,因为这个问题的目标是能够实时更改 c 参数,以便旧点“冷却”为更深的颜色。

感谢您的宝贵时间。


编辑以添加更多信息:我希望能够在使用单一颜色制作的散点图和使用可变颜色图和标准化的散点图之间来回切换。在 scatter(X, Y, color="#FF0000")scatter(X, Y, c=age, cmap="rainbow") 之间,例如,与变量 age = [i for i,x in enumerate(X)]

最佳答案

您实际上可以更改值,而不是更改颜色图。如果您为颜色图设置了under 颜色,您可以将值更改为低于标准的任何值并以该颜色显示。

当按下 n 时,下面的代码会将值设置为比最小值小 1。当按下 m 时,它们会恢复到原来的值。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)

a = np.random.randint(10,30, size=20)
x = np.random.rand(20)
y = np.random.rand(20)

cmap = plt.get_cmap("rainbow")
cmap.set_under("black")

fig, ax = plt.subplots()
ax.set_title("Press n and m keys to change colors")
sc = ax.scatter(x,y, c=a, cmap=cmap)

def change(evt):
if evt.key in list("nm"):
if evt.key == "n":
sc.set_array(np.ones_like(a)*a.min()-1)
if evt.key == "m":
sc.set_array(a)
fig.canvas.draw_idle()


fig.canvas.mpl_connect("key_press_event", change)

plt.show()

如果您确实需要从未定义其数组的散点图开始,您可以按如下所示进行操作。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)

a = np.random.randint(10,30, size=20)
x = np.random.rand(20)
y = np.random.rand(20)

cmap = plt.get_cmap("rainbow")
cmap.set_under("black")
norm = plt.Normalize(a.min(), a.max())

fig, ax = plt.subplots()
ax.set_title("Press n and m keys to change colors")
sc = ax.scatter(x,y, color="black")

def change(evt):
if evt.key in list("nm"):
sc.set_cmap(cmap)
sc.set_norm(norm)
if evt.key == "n":
sc.set_array(np.ones_like(a)*a.min()-1)
if evt.key == "m":
sc.set_array(a)
fig.canvas.draw_idle()


fig.canvas.mpl_connect("key_press_event", change)

plt.show()

关于python-3.x - 如何在绘制散点图后修改其颜色图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53848655/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com