x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 6, 4]
c = [(1, 0, 0, 1),(1, 0, 0, .8),(0, 0, 0, .5),(0, 0, 0, .8),(1, 0, 0, .3)]
plt.scatter(x,y,c=c,s=55)
plt.legend(handles=[mpatches.Patch(color='red',label='Type1'),
mpatches.Patch(color='black',label='Type2')])
plt.show()
我正在绘制一个与上面的数据集有些相似的数据集。在我的数据集中,颜色表示数据点的分类,不透明度表示其错误的大小(数据集相当密集,使得错误条不可行。)
我想知道是否有可能创建某种不透明度的图例,可能是一行黑点,其不透明度从0变为1,每个都标有相关的错误。
谢谢!
答案 0 :(得分:3)
您可以添加另一个带有空散点图的图例作为手柄,其中散点的'alpha值会发生变化。
例如,要使用6种不同的不透明度,范围从0到1,您可以这样做:
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 6, 4]
c = [(1, 0, 0, 1),(1, 0, 0, .8),(0, 0, 0, .5),(0, 0, 0, .8),(1, 0, 0, .3)]
plt.scatter(x,y,c=c,s=55)
leg1 = plt.legend(handles=[mpatches.Patch(color='red',label='Type1'),
mpatches.Patch(color='black',label='Type2')], loc="upper left")
plt.gca().add_artist(leg1)
error = [0,.2,.4,.6,.8,1]
h = [plt.scatter([],[],s=55, c=(0,0,0,i)) for i in error]
plt.legend(h, error, loc="upper right")
plt.show()
答案 1 :(得分:2)
如果使用亮度而不是不透明度来表示错误是一个选项,则可以使用预定义的色彩映射来显示如下所示的颜色栏。否则,我认为您可以尝试定义自己的色彩映射。
from matplotlib import pyplot as plt
from matplotlib import patches as mpatches
t1_x = [1, 2, 5]
t1_y = [2, 3, 4]
t1_err = [1, .8, .3]
t2_x = [3, 4]
t2_y = [5, 6]
t2_err = [.5, .8]
plt.figure(figsize=[8, 4])
t1_sc = plt.scatter(t1_x, t1_y, s=55, vmin=0, vmax=1,
c=t1_err, cmap=plt.cm.get_cmap('Reds'))
t2_sc = plt.scatter(t2_x, t2_y, s=55, vmin=0, vmax=1,
c=t2_err, cmap=plt.cm.get_cmap('Greys'))
plt.colorbar(t1_sc)
plt.colorbar(t2_sc)
plt.legend(handles=[mpatches.Patch(color='red',label='Type1'),
mpatches.Patch(color='black',label='Type2')])
plt.show()