使用颜色图和单个 alpha 值的散点图
Scatter plot using colormap and individual alpha values
有两个类似的问题:
- Individual alpha values in scatter plot
但是这些都没有解决这个问题。我需要生成一个带有单个 alpha 的散点图(如问题 1.),但我需要将其与给定的颜色图结合使用(如问题 2.)
这是我想出的:
import numpy as np
import matplotlib.pylab as plt
from matplotlib.colors import ListedColormap
x = np.arange(10)
y = np.arange(10)
# These are the colors for my data
z = np.arange(10)
# These are the alpha values for my data
alphas = np.linspace(0.1, 1, 10)
# Color map I want to use
cm = plt.cm.get_cmap('viridis')
# Get the colormap colors for my data
my_cmap = cm(z)
# Set alpha
my_cmap[:, -1] = alphas
# Create new colormap
my_cmap = ListedColormap(my_cmap)
plt.subplot(121)
plt.scatter(x, y, cmap=cm, c=z)
plt.subplot(122)
plt.scatter(x, y, cmap=my_cmap, c=z)
plt.show()
但结果不是我所期望的:
左边的图像是散点图使用颜色图的样子,没有 alpha,右边的图是我尝试将单个 alpha 添加到数据点。
通常的颜色图有 256 种颜色。这里你 select 只有前 10 个,它们看起来大致相同(都是深紫色)。
我想当用
替换my_cmap = cm(z)
时,您的代码会运行
my_cmap = cm(plt.Normalize(z.min(), z.max())(z))
或
my_cmap = cm(np.linspace(0,1,len(z)))
有两个类似的问题:
- Individual alpha values in scatter plot
但是这些都没有解决这个问题。我需要生成一个带有单个 alpha 的散点图(如问题 1.),但我需要将其与给定的颜色图结合使用(如问题 2.)
这是我想出的:
import numpy as np
import matplotlib.pylab as plt
from matplotlib.colors import ListedColormap
x = np.arange(10)
y = np.arange(10)
# These are the colors for my data
z = np.arange(10)
# These are the alpha values for my data
alphas = np.linspace(0.1, 1, 10)
# Color map I want to use
cm = plt.cm.get_cmap('viridis')
# Get the colormap colors for my data
my_cmap = cm(z)
# Set alpha
my_cmap[:, -1] = alphas
# Create new colormap
my_cmap = ListedColormap(my_cmap)
plt.subplot(121)
plt.scatter(x, y, cmap=cm, c=z)
plt.subplot(122)
plt.scatter(x, y, cmap=my_cmap, c=z)
plt.show()
但结果不是我所期望的:
左边的图像是散点图使用颜色图的样子,没有 alpha,右边的图是我尝试将单个 alpha 添加到数据点。
通常的颜色图有 256 种颜色。这里你 select 只有前 10 个,它们看起来大致相同(都是深紫色)。
我想当用
替换my_cmap = cm(z)
时,您的代码会运行
my_cmap = cm(plt.Normalize(z.min(), z.max())(z))
或
my_cmap = cm(np.linspace(0,1,len(z)))