【问题标题】:python : How to add different markers to different Y valuespython:如何将不同的标记添加到不同的 Y 值
【发布时间】:2022-11-13 22:00:44
【问题描述】:

我正在尝试可视化每个 X 值都有多个 Y 值的数据,我想区分每个 Y 值。这是示例代码

xLables = ['A1','A2','A3','A4','A5']

YValues = [[1,2,3,4],[1,2,3,4,5,6,7],[1,2,3],[5,6,7],[1,2,3]]
X = [xLables[i] for i, data in enumerate(YValues) for j in range(len(data))]
Y = [val for data in YValues for val in data]

plt.scatter(X, Y)
plt.grid()
plt.show()

当我绘制这个时,我附上了以下内容

每个 X 标签都有对应的 Y 值...例如:A1 有 1,2,3,4 ,A2 有 1,2,3,4,5,6,7 等等

我对此有两个问题

(1) 我可以为不同的 Y 值设置不同的标记吗?所有 1 都是星星,所有 2 都是菱形,所有 10 都是圆圈?

像这样的东西可能是

(2) 是否有更好的方法来绘制此类 2D 数据并在每个 X 具有多个 Y 值的情况下区分它们

非常感谢任何建议/帮助

谢谢

我尝试添加标记和不同的颜色,但它们适用于每个 X 的所有 Y 值 .. 但不是特定于每个 Y 值..

【问题讨论】:

  • Imo Y 值在没有标记的情况下被清楚地识别。通过它们在情节中的纵坐标。这就是散点图的目的。为什么你认为需要一个标记?

标签: python matplotlib plot scatter-plot


【解决方案1】:

您可以添加标记。 可以在此处找到它们的列表:https://matplotlib.org/stable/api/markers_api.html

我认为您可以像这样使用它: plt.scatter([1, 2, 3], marker=11) 这意味着您必须将想要相同的值放在同一个列表中。我认为没有办法给出标记列表或类似的东西。

据我了解,您的代码如下所示:

plt.scatter(X, Y[0], marker=1)
plt.scatter(X, Y[1], marker=1)
plt.scatter(X, Y[2], marker=1)
plt.scatter(X, Y[3], marker=1)

如果它必须适用于不同大小的东西,您可以将其设为 for 循环,但我想您会从这里弄清楚。

祝你好运,我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2022-07-20
    • 2020-02-13
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多