如何在python的散点图中添加具有不同标记的多个图例?

Posted

技术标签:

【中文标题】如何在python的散点图中添加具有不同标记的多个图例?【英文标题】:How to add multiple legends with different markers in scatter plot in python? 【发布时间】:2020-06-28 08:07:19 【问题描述】:

这个link 接受的答案解释了如何绘制二元分类的散点图。但没有解释如何更改标记的默认颜色。所以我写了下面给出的代码来改变标记的颜色

import matplotlib.colors as mcolors
plt.figure(num=0, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

x=df.iloc[:,0:1].values
y=df.iloc[:,1:2].values
z=df.iloc[:,2:3].values

l=plt.scatter(x,y, c=z,cmap = mcolors.ListedColormap(["blue", "red"]),marker='+')
plt.xlabel('Exam 1 score',fontsize=14)
plt.ylabel('Exam 2 score',fontsize=14)
# Turn on the minor TICKS, which are required for the minor GRID
plt.minorticks_on()

# Customize the major grid
plt.grid(which='major', linestyle='-', linewidth='0.5', color='black')
# Customize the minor grid

plt.grid(which='minor', linestyle=':', linewidth='0.5', color='blue')
plt.legend((l,l),("Admitted", "Not Admitted"), loc="upper right")
plt.show()  

但是现在我尝试将图例添加为plt.legend((l,l),("Admitted", "Not Admitted"), loc="upper right"),结果如图所示。为此,我得到了here 的帮助,他们绘制了多个散点图,但就我而言,我只有一个散点图。

但如上图所示,图例中两个标记的标记颜色相同。所以我的问题是如何通过在散点图中使用 plt.legend()来添加具有不同标记颜色或不同标记的多个图例?

【问题讨论】:

manually-set-color-of-points-in-legend 和 matplotlib-set-color-of-legend 和 manually-change-color-in-legend-of-pyplot 的可能重复 【参考方案1】:

从 matplotlib 3.1 开始,您可以使用散点图的legend_elements() 来促进图例的创建。

import matplotlib.colors as mcolors
plt.figure(num=0, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

x=np.random.random(size=(10,))
y=np.random.random(size=(10,))
z=np.random.choice([0,1], size=(10,))

s = plt.scatter(x,y, c=z,cmap = mcolors.ListedColormap(["blue", "red"]),marker='+')
plt.xlabel('Exam 1 score',fontsize=14)
plt.ylabel('Exam 2 score',fontsize=14)
# Turn on the minor TICKS, which are required for the minor GRID
plt.minorticks_on()

# Customize the major grid
plt.grid(which='major', linestyle='-', linewidth='0.5', color='black')
# Customize the minor grid

plt.grid(which='minor', linestyle=':', linewidth='0.5', color='blue')
h,l = s.legend_elements()
plt.legend(h,("Admitted", "Not Admitted"))

更多examples here

【讨论】:

非常感谢!!我想要完全相同的东西。

以上是关于如何在python的散点图中添加具有不同标记的多个图例?的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenGL 的散点图:如何设置标记样式

如何在python中的散点图中平滑数据点?

Matlab:如何在每个数据点获得不同颜色的散点图中设置图例的颜色?

R语言ggplot2可视化:ggplot2可视化分组散点图并使用geom_smooth函数在散点图图中为不同的散点簇添加对应的回归曲线

问题--在matplotlib的散点图中如何给不同种类颜色的点加标签?

[散点图][Plotly][Python] 如何在散点图中标记心形