【问题标题】:Python Matplotlib lines in scatter plot散点图中的 Python Matplotlib 线
【发布时间】:2013-11-27 22:28:11
【问题描述】:

有没有办法影响散点图中连接的点?

我想要一个散点图,其中靠近的点连接在一起。当我使用plot(x,y) 命令绘图时,点之间的线取决于列表的顺序,这不是我想要的。

【问题讨论】:

  • 抱歉,您的意思是要将点 close 连接在一起吗?还是它们被什么东西包围了?
  • 你能提供一些示例数据和示例输出(这不是你想看到的)吗?
  • 散点图中的点是“连接的”是什么意思?他们不应该......你能给我们看一些代码和图片吗?
  • 听起来更像你想要的scipy.spatial。查看绘图助手。
  • 您能否编辑您的问题以更清楚地说明您想要什么以及您尝试过什么?

标签: python matplotlib plot scatter


【解决方案1】:

我从你的问题的措辞中得到一个暗示,你有两组无序的点 x,y。当您绘制它们时(不是@tcaswell 指出的散点图;这不会连接点!),因此连接点的线将遵循点的顺序。

如果这是您要解决的问题,可以这样做:

fig, (ax1, ax2) = plt.subplots(ncols=2)

x = np.random.uniform(0, 1, 10)
y = np.random.uniform(0, 1, 10)

# Plot non-ordered points
ax1.plot(x, y, marker="o", markerfacecolor="r")

# Order points by their x-value
indexs_to_order_by = x.argsort()
x_ordered = x[indexs_to_order_by]
y_ordered = y[indexs_to_order_by]

ax2.plot(x_ordered, y_ordered, marker="o", markerfacecolor="r")

重要的一点是,如果您正在处理的数据是 numpy 数组(如果它们是列表,则只需调用 np.array(list))然后 argsort 返回排序数组的索引。使用这些索引意味着我们可以对两个列表进行成对排序,并以正确的顺序绘制,如右图所示:

如果我误解了您的问题,我深表歉意。在这种情况下,请发表评论,我会尝试删除我的答案。

【讨论】:

  • 嗨,很抱歉,我的问题似乎不清楚。我必须设置点 x,y,我想将它们绘制成散点图。但我不想按 x 升序绘制它们,但我想连接它们之间距离最小的点。 (就像 excel 一样,当您向散点图添加线条时)
  • 你所说的方式表明只有一组点将被连接,这是正确的还是你的意思是“每个点都连接到它最近的邻居”,也就是说你设想一条线是绘制还是很多?
  • 我总是想连接最近的邻居,但是每个节点的最大度数为 2,所以我希望在线连接所有点,而不是树/星状结构。
  • 我认为您需要在尝试绘制它之前定义您的连接。如果您连接最近的邻居,那么您会将点列表分成点对,在这种情况下,每个点的最大度数为 1。这是因为每个点只能有 1根据定义,最近的邻居,他们别无他法。因此,您需要添加第二个条件,说明如何将这对点连接起来..
  • 来晚了,虽然这可能没有回答最初的问题,但它确实回答了我的问题 - 重新问你在这里实际回答的问题是否有意义?
猜你喜欢
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 2012-06-26
相关资源
最近更新 更多