我正在尝试生成一个简单的虹膜数据集的图,绘制花冠长度与花冠宽度的关系图。我想在这个图旁边创建一个列表条,并只用0、1和2来标记该列表条。我成功地生成了图和颜色条,但颜色条的标记不是我想要的方式:
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
# import the Iris-dataset from sklearn
iris = datasets.load_iris()
data = np.array(iris.data)
labels = np.array(iris.target)
fig = plt.figure()
img = plt.scatter(data[:, 0], data[:, 1], c=labels, cmap='rainbow', edgecolor='k', s=50)
plt.xlabel("Sepal Length [cm]", fontname="Calibri", fontsize=14, labelpad=14)
plt.ylabel("Sepal Width [cm]", fontname="Calibri", fontsize=14, labelpad=14)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
cax = fig.add_axes([0.93, 0.09, 0.02, 0.8])
cax.tick_params(axis='y', labelsize=12)
cax.set_yticks(ticks=[0, 1, 2], minor=False)
cax.set_yticklabels(labels=['0', '1', '2'], minor=False)
fig.colorbar(img, cax=cax, orientation="vertical")
plt.show()

有人能给我解释一下如何去掉我不想要的标签吗?我只想在我的颜色条上看到0,1和2。
发布于 2021-06-07 04:13:42
我根据this文档对您的代码进行了一些编辑,它做到了:
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from pylab import cm
# import the Iris-dataset from sklearn
iris = datasets.load_iris()
data = np.array(iris.data)
labels = np.array(iris.target)
fig = plt.figure()
img = plt.scatter(data[:, 0], data[:, 1], c=labels, cmap='rainbow', edgecolor='k', s=50)
plt.xlabel("Sepal Length [cm]", fontname="Calibri", fontsize=14, labelpad=14)
plt.ylabel("Sepal Width [cm]", fontname="Calibri", fontsize=14, labelpad=14)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
cax = fig.add_axes([0.93, 0.09, 0.02, 0.8])
cax.tick_params(axis='y', labelsize=12)
# cax.set_yticks(ticks=[0, 1, 2], minor=False)
# cax.set_yticklabels(labels=['0', '1', '2'], minor=False)
cbar = fig.colorbar(img, cax=cax, ticks=[0, 1, 2])
cbar.ax.set_yticklabels(['0', '1', '2'])
# fig.colorbar(img, cax=cax, orientation="vertical")
plt.show()结果图:

https://stackoverflow.com/questions/67863064
复制相似问题