当前位置: 首页 > 知识库问答 >
问题:

使用matplotlib中样本的标签为散点图创建图例

郑松
2023-03-14

我正在使用matplotlib中的散点图来绘制一些点。我有两个1D数组,每个数组存储样本的x和y坐标。此外,还有另一个1D数组存储标签(用于决定点应以何种颜色绘制)。到目前为止,我编写了:

import matplotlib.pyplot as plt
X = [1,2,3,4,5,6,7]
Y = [1,2,3,4,5,6,7]
label = [0,1,4,2,3,1,1]
plt.scatter(X, Y, c= label, s=50)
plt.show()

现在我想能够看到哪种颜色对应哪种标签?我在matplotlib中查找了图例的实现,就像这里的一样:如何为散射()添加图例?然而,他们建议为每个样本标签创建一个图表。然而,我所有的标签都在同一个1D数组(标签)。我该如何实现这一点?

共有1个答案

方恺
2023-03-14

你可以用彩色地图。这里有一些如何做到这一点的例子。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors as colors
X = [1,2,3,4,5,6,7]
Y = [1,2,3,4,5,6,7]
label = [0,1,4,2,3,1,1]

# Define a colormap with the right number of colors
cmap = plt.cm.get_cmap('jet',max(label)-min(label)+1)

bounds = range(min(label),max(label)+2)
norm = colors.BoundaryNorm(bounds, cmap.N)

plt.scatter(X, Y, c= label, s=50, cmap=cmap, norm=norm)

# Add a colorbar. Move the ticks up by 0.5, so they are centred on the colour.
cb=plt.colorbar(ticks=np.array(label)+0.5)
cb.set_ticklabels(label)

plt.show()

你可能需要四处玩耍,让刻度标签以它们的颜色为中心,但你明白了。

 类似资料:
  • 散点图用于在水平轴和垂直轴上绘制数据点,它表示了因变量随自变量变化的趋势。通俗地讲,它反映的是一个变量受另一个变量的影响程度。 散点图将序列显示为一组点,其中每个散点值都由该点在图表中的坐标位置表示。对于不同类别的点,则由图表中不同形状或颜色的标记符表示。同时,您也可以设置标记符的颜色或大小。 下面示例,绘制了学生考试成绩的散点图,其中蓝色代表男孩成绩,红色表示女孩的成绩。 代码执行后,输出结果如

  • 本文向大家介绍matplotlib 散点图,包括了matplotlib 散点图的使用技巧和注意事项,需要的朋友参考一下 示例 一个简单的散点图 带有标记点的散点图            

  • 我有两个列表,日期和值。我想使用matplotlib绘制它们。下面创建了我的数据散点图。 创建线图。 但我真正想要的是一个散点图,其中的点由一条线连接。 与R中的类似: ,这给了我一个点的散点图,上面有一条连接点的线。 如何在python中实现这一点?

  • 问题内容: 我想在同一图中创建具有不同数据集的3D散点图,并在其标签中创建图例。我面临的问题是我无法正确添加图例,并且得到了带有空标签的图,如图所示: http://tinypic.com/view.php?pic=4jnm83&s=5#.Uqd-05GP- gQ 。 更具体地说,我得到了错误: 请在下面找到我到目前为止尝试过的示例演示: 我看过其他大致相似的示例,但没有一个使用scatter()

  • 正如标题所说,我想创建一个散点图,但我希望图由矩形组成。到目前为止,显而易见的答案是将标记设置为“s”,如下所示: 如果我想增加或减少x和y的每个点之间的距离(在图上),该怎么办?就像上面的图一样,它们将是两个相等的正方形,彼此紧挨着,但如果我希望它们是长的或宽的矩形(但仍然只在点(1,1)和(1,2)处)呢? 最终的目标是创建一个图,它有一个长的(或者宽的,永远不是两个都有)矩形来表示点,就像上

  • 问题内容: 我有两个列表,日期和值。我想使用matplotlib绘制它们。以下创建了我的数据的散点图。 创建一个折线图。 但是我真正想要的是一个散点图,其中的点由一条线连接。 类似于R: ,这使我得到了点的散点图,并用连接点的线覆盖了点。 我该如何在python中做到这一点? 问题答案: 我认为@Evert有正确的答案: 几乎与 或您喜欢的任何 线型 。