Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以交互方式更改matplotlib绘图的alpha值_Python_Matplotlib - Fatal编程技术网

Python 以交互方式更改matplotlib绘图的alpha值

Python 以交互方式更改matplotlib绘图的alpha值,python,matplotlib,Python,Matplotlib,我看过文档,但我似乎不知道这是否可行- 我有一个数据集,有x和y值和离散z值。多对(x,y)共享相同的z值。我想做的是,当我将鼠标移到一个具有特定z值的点上时,具有相同z值的所有点的alpha变为1-即,如果所有alpha值最初都为0.5,我只希望具有相同z值的点变为1 下面是一个简单的工作示例来说明我所说的内容: #! /usr/bin/env python import numpy as np import matplotlib.pyplot as plt x = np.random.

我看过文档,但我似乎不知道这是否可行-

我有一个数据集,有
x
y
值和离散
z
值。多对
(x,y)
共享相同的
z
值。我想做的是,当我将鼠标移到一个具有特定
z
值的点上时,具有相同
z
值的所有点的
alpha
变为1-即,如果所有alpha值最初都为0.5,我只希望具有相同z值的点变为1

下面是一个简单的工作示例来说明我所说的内容:

#! /usr/bin/env python

import numpy as np
import matplotlib.pyplot as plt

x  = np.random.randn(100)
y  = np.random.randn(100)

z   = np.arange(0, 10, 1)
z   = np.repeat(z, 10)

im = plt.scatter(x, y, c=z, alpha = 0.5)
plt.colorbar(im)
plt.show()

您可能可以使用第二个情节来伪造您想要实现的目标:

import numpy as np
import matplotlib.pyplot as plt

Z = np.zeros(1000, dtype = [("Z", int), ("P", float, 2)])
Z["P"] = np.random.uniform(0.0,1.0,(len(Z),2))
Z["Z"] = np.random.randint(0,50,len(Z))

def on_pick(event):
    z = Z[event.ind[0]]['Z']
    P = Z[np.where(Z["Z"] == z)]["P"]
    selection_plot.set_data(P[:,0],P[:,1])
    plt.draw()


fig = plt.figure(figsize=(10,10), facecolor='white')
fig.canvas.mpl_connect('pick_event', on_pick)
ax = plt.subplot(111, aspect=1)
ax.plot(Z['P'][:,0], Z['P'][:,1], 'o', color='k', alpha=0.1, picker=5)

selection_plot, = ax.plot([],[], 'o', color='black', alpha=1.0, zorder=10)
plt.show()

最简单的方法是为每个标记传入一个RGBA值列表。在合成过程中,
alpha
kwarg适用于整个艺术家。@tcaswell我曾对此进行过短暂的实验-虽然可以为每个点设置单独的RGB值,似乎为集合设置的全局
alpha
值覆盖了对每个点的alpha通道的任何手动更改。我的理解是,它们堆叠了查看和包含的链接,比您想知道mpl如何进行alpha混合的更多。