为了账号安全,请及时绑定邮箱和手机立即绑定

Python/matplotlib:如何更改图中每个第 n 个数据点的颜色和/或符号?

Python/matplotlib:如何更改图中每个第 n 个数据点的颜色和/或符号?

慕沐林林 2022-11-29 15:59:23
我使用 Python 的经验非常基础。我已经编写了 Python 代码来从外部文件导入数据并执行计算。我的结果看起来像这样(除了实际上要大得多)。1   1       1   1957    1   0.15        2   346 2   0.902   1003   19203   1003   40我想要做的是将这两列绘制为一个系列,然后根据特定模式区分每个数据点。我知道这听起来不必要地复杂,但这是我需要做的事情来帮助那些将使用我的代码的人。不幸的是,我的 Python 技能在这里让我失望了。进一步来说:1.第一列有“1”、“2”或“3”。所以首先我想把所有的“1”数据点都画成圆圈(例如),所有的“2”数据点都画成其他符号,“3”数据点也是如此。2.接下来。每个不同的数字有三行。所以对于“1”,第二列的“0.15”是平均值,“1957”是最大值,“1”是最小值。我想让与每个数字的平均值(每个数字的第一行)相关联的数据点变为绿色(例如)。我希望最大值和最小值也有自己的颜色。所以我最终会得到一个只显示一个系列的图,但每个数据点看起来都不同。如果有人能指出正确的方向,我将不胜感激。如果我没有说清楚,请告诉我,我会再试一次!
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

对于不同的标记样式,您当前需要创建不同的绘图实例(请参阅此 github 问题)。可以通过将数组作为color参数传递来使用不同的颜色。例如:


import matplotlib.pyplot as plt

import numpy as np


data = np.array([

    [1, 0.15],

    [1, 1957],

    [1, 1],

    [2, 346],

    [2, 0.90],

    [2, 100],

    [3, 1920],

    [3, 100],

    [3, 40],

])

x, y = np.transpose(data)


symbols = ['o', 's', 'D']

colors = ['blue', 'orange', 'green']


for value, marker in zip(np.unique(x), symbols):

    mask = (x == value)

    plt.scatter(x[mask], y[mask], marker=marker, color=colors)

plt.show()


查看完整回答
反对 回复 2022-11-29
?
米脂

TA贡献1836条经验 获得超3个赞

我要做的是将数据分成三个不同的列,这样你就有了几个系列。然后我会使用带有不同标记的 plt.scatter 来获得所需的效果。


import matplotlib.pyplot as plt

import numpy as np


# Fixing random state for reproducibility

np.random.seed(19680801)



N = 100

r0 = 0.6

x = 0.9 * np.random.rand(N)

y = 0.9 * np.random.rand(N)

area = (20 * np.random.rand(N))**2  # 0 to 10 point radii

c = np.sqrt(area)

r = np.sqrt(x ** 2 + y ** 2)

area1 = np.ma.masked_where(r < r0, area)

area2 = np.ma.masked_where(r >= r0, area)

plt.scatter(x, y, s=area1, marker='^', c=c)

plt.scatter(x, y, s=area2, marker='o', c=c)

# Show the boundary between the regions:

theta = np.arange(0, np.pi / 2, 0.01)

plt.plot(r0 * np.cos(theta), r0 * np.sin(theta))


plt.show()


来源:https ://matplotlib.org/3.1.1/gallery/lines_bars_and_markers/scatter_masked.html#sphx-glr-gallery-lines-bars-and-markers-scatter-masked-py


查看完整回答
反对 回复 2022-11-29
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信