散点图中的单个alpha值

时间:2014-07-15 20:15:13

标签: python matplotlib alpha scatter-plot

我想知道是否可以使用Matplotlib的scatter函数为每个点绘制单独的alpha值。我需要绘制一组点,每个点都有一个alpha值。

例如,我有这个代码来绘制一些点

def plot_singularities(points_x, p, alpha_point, file_path):
    plt.figure()
    plt.scatter(points_x, points_y, alpha=alpha_point)
    plt.savefig(file_path + '.png', dpi=100)
    plt.close()

我的所有points_xpoints_yalpha_point都有n个值。但是,我无法将数组分配给alpha中的scatter()参数。如何为每个点设置不同的alpha值?我可以使用每个特定的alpha值循环和逐点绘制,但这似乎不是一个好方法。

2 个答案:

答案 0 :(得分:45)

tcaswell的建议是正确的,你可以这样做:

import numpy as np
import matplotlib.pylab as plt

x = np.arange(10)
y = np.arange(10)

alphas = np.linspace(0.1, 1, 10)
rgba_colors = np.zeros((10,4))
# for red the first column needs to be one
rgba_colors[:,0] = 1.0
# the fourth column needs to be your alphas
rgba_colors[:, 3] = alphas

plt.scatter(x, y, color=rgba_colors)
plt.show()

Output

答案 1 :(得分:1)

enter image description here

您可以使用color参数和带有alpha的颜色图。 cmap将alpha值从0线性增加到1。

import numpy as np
import matplotlib.pylab as plt
from matplotlib import colors

c='C0'

xs = np.arange(10)

fig, ax = plt.subplots(1, 1)
cmap = colors.LinearSegmentedColormap.from_list(
        'incr_alpha', [(0, (*colors.to_rgb(c),0)), (1, c)])
ax.scatter(xs, xs, c=xs, cmap=cmap, ec=None, s=10**2)

plt.show()