【问题标题】:How to show points in the scatter plot as plus and minus signs?如何将散点图中的点显示为加号和减号?
【发布时间】:2019-12-22 09:55:03
【问题描述】:

我有一个简短的问题:有没有办法将散点图中的点显示为加号和减号?例如,此代码生成带有蓝色和红色点的散点图:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df = pd.DataFrame({'x': np.arange(25), 'y': np.random.normal(0,2500,25)})
       fig, ax = plt.subplots()
ax.scatter(df.x, df.y, c=np.sign(df.y), cmap="bwr")
plt.show()

我希望将蓝色点作为蓝色加号,将红色点作为红色减号。是否可以?提前致谢。

【问题讨论】:

  • 您必须屏蔽数据并调用 scatter 两次
  • 是的,很好。

标签: python pandas matplotlib


【解决方案1】:

您可以将此参数添加到 ax.scatter marker="+" 有关标记的完整列表,请参阅official documentation

如果您需要条件标记,您可以将标记分配为运行 if 子句的数组,类似于 this 之前的 SO 线程

【讨论】:

  • 您实际上是如何建议绘制它的?您是否建议为每个点单独调用 scatter 的循环?因为在这种情况下,你的情节很快就会变得难以管理。
  • 它一定解决了他的部分问题,但我同意如果他主要关心的是一次使用多个标记,掩蔽是更好的方法。
  • @Axblert。我已经为您链接到的问题添加了答案。如果您发布您建议的代码而不是仅仅链接到它,那就太好了。
【解决方案2】:

scatter 每次调用只接受一个 marker style,因此您必须分别绘制每个标记。使用掩码相当容易:

mask = df.y >= 0
ax.scatter(df.x[mask], df.y[mask], c='b', marker='+')
ax.scatter(df.x[~mask], df.y[~mask], c='r', marker='_')

【讨论】:

  • 一个常见的变体使用'^'和'v'作为上下三角形的标记
  • @JohanC。 OP 专门要求使用 + 和 -,但我已经看到了它以及许多其他选项,例如红色和绿色圆圈。
  • 确实如此。 OP 可以考虑多种变体并选择最适合其应用的变体。
猜你喜欢
  • 1970-01-01
  • 2018-07-21
  • 1970-01-01
  • 2014-09-08
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2017-02-02
相关资源
最近更新 更多