gpt4 book ai didi

python - 散点图 matplotlib 的标记样式

转载 作者:行者123 更新时间:2023-12-04 14:05:31 44 4
gpt4 key购买 nike

我想为这个二进制响应数据使用不同的标记样式。但是,我无法在这里整合一个。我有兴趣为一个类(class)使用三角形标记,为另一类(class)使用开始标记。此外,最好使用自定义图例,例如 1 表示多数类,0 表示少数类。感谢您的建议。谢谢!

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs
from numpy.random import seed
seed(133)
X, y = make_blobs(n_samples=[1000, 10],centers=[[0.0, 0.0], [2.0, 2.0]],cluster_std= [1.5, 0.5],random_state=0, shuffle=False)
colormap = np.array(['tab:orange', 'tab:blue'])
plt.scatter(X[:, 0], X[:, 1],s=40, c=colormap[y], cmap=plt.cm.Paired, edgecolors='k')

最佳答案

使用seaborn

如果愿意用seaborn,sns.scatterplot有一个 style 参数来指定标记组:

style: vector or key in data

Grouping variable that will produce points with different markers. Can have a numeric dtype but will always be treated as categorical.

然后 markers 参数允许您为每个 style 级别指定标记:

sns.scatterplot(x=X[:,0], y=X[:,1], s=40, hue=y, style=y, markers=['*','^'])

seaborn scatterplot with grouped markers

使用纯matplotlib

然而与纯plt.scatter , marker 参数只接受一个值,所以你应该为每个类绘制一个单独的 scatter:

marker = ['*', '^']
for group in set(y):
plt.scatter(
X[y==group, 0], X[y==group, 1], # filter by group
marker=marker[group], # set marker per group
label=group, # set legend label
s=40, c=colormap[group], cmap=plt.cm.Paired, edgecolors='k',
)
plt.legend()

这假设您的类是 0 和 1,就像您的示例一样。如果真正的类被标记为其他内容,您应该枚举循环以访问数字索引:

for index, group in enumerate(set(y)):
...

pyplot scatter with grouped markers

关于python - 散点图 matplotlib 的标记样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68675268/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com