如何将散点图中的点显示为加号和减号?

Log*_*_42 3 python matplotlib pandas

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

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()
Run Code Online (Sandbox Code Playgroud)

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

Axb*_*ert 6

您可以将此参数添加到 ax.scattermarker="+" 有关标记的完整列表,请参阅官方文档

如果你想有条件的标记,你可以指定标记为一个数组,你运行一个if子句,类似于之前的SO线程


Mad*_*ist 5

scatter每次调用只接受一个标记样式,因此您必须单独绘制每个标记。使用掩码这相当容易:

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='_')
Run Code Online (Sandbox Code Playgroud)