如何使用matplotlib scatter()调整每个点的Alpha?

时间:2019-11-20 00:51:12

标签: python matplotlib

例如,我想提供一个alpha值数组,该数组的值与我要散点绘制的点的长度相同。

我看到可以通过手动计算rbg颜色值并使用颜色图来解决,这是一种更简单的方法吗?

如果这是唯一的方法,我如何才能抽象该函数,以便仅提供#个元素,颜色和透明度值即可获得我需要的颜色图?我不知道我可能使用什么颜色,并且透明度的权重会发生变化,所以我想要更通用的东西。

2 个答案:

答案 0 :(得分:2)

您可以使用matplotlib.colors.to_rgb(a)

import matplotlib.pyplot as plt
from matplotlib.colors import to_rgb, to_rgba
import numpy as np

def scatter(x, y, color, alpha_arr, **kwarg):
    r, g, b = to_rgb(color)
    # r, g, b, _ = to_rgba(color)
    color = [(r, g, b, alpha) for alpha in alpha_arr]
    plt.scatter(x, y, c=color, **kwarg)

N = 500
x = np.random.rand(N)
y = np.random.rand(N)
alpha_arr = x * y
scatter(x, y, 'red', alpha_arr, s=10) # ok
scatter(x, y, '#efefef', alpha_arr, s=10) # ok

ref。

答案 1 :(得分:-3)

Matplot具有一个内置函数,用于创建名为scatter()的散点图。散点图是一种将数据显示为点集合的图。点的位置取决于其二维值,其中每个值都是水平或垂直维度上的位置。

相关课程

使用Matplotlib和Python进行数据可视化 散点图示例 示例:

import numpy as np
import matplotlib.pyplot as plt

# Create data
N = 500
x = np.random.rand(N)
y = np.random.rand(N)
colors = (0,0,0)
area = np.pi*3

# Plot
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.title('Scatter plot pythonspot.com')
plt.xlabel('x')
plt.ylabel('y')
plt.show()

matplotlib-scatter-plotScatter plot created with Matplotlib
Scatter plot with groups
Data can be classified in several groups. The code below demonstrates that:


import numpy as np
import matplotlib.pyplot as plt

# Create data
N = 60
g1 = (0.6 + 0.6 * np.random.rand(N), np.random.rand(N))
g2 = (0.4+0.3 * np.random.rand(N), 0.5*np.random.rand(N))
g3 = (0.3*np.random.rand(N),0.3*np.random.rand(N))

data = (g1, g2, g3)
colors = ("red", "green", "blue")
groups = ("coffee", "tea", "water")

# Create plot
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, axisbg="1.0")

for data, color, group in zip(data, colors, groups):
x, y = data
ax.scatter(x, y, alpha=0.8, c=color, edgecolors='none', s=30, label=group)

plt.title('Matplot scatter plot')
plt.legend(loc=2)
plt.show()

BackNext

发布在绘图中

散点图