带有自定义刻度的散点图

Scatter plot with custom ticks

我想绘制 y 轴上的波长(浮点数)和 x 轴上的光谱 class(character/string 列表)的散点图,标签 = ['B','A','F','G','K','M']。数据保存在 pandas dataframe, df.

df['Spec Type Index']
0      NaN
1        A
2        G
.        .
.        .
167      K
168    Nan
169      G

然后,

df['Disk Major Axis "']
0        4.30
1        4.50
2       22.00
.         .
.         .
167      1.32
168      0.28
169     25.00

因此,我认为这应该简单地用

来完成
plt.scatter(df['Spec Type Index'], df['Disk Major Axis "'])

但是我遇到了这个烦人的错误

could not convert string to float: 'G'

解决这个问题后,我想按如下方式制作自定义 xticks。但是,我怎么能

labels = ['B','A','F','G','K','M']
ticks = np.arange(len(labels))
plt.xticks(ticks, labels)

首先,我认为您必须将这些字符串映射到整数,然后 matplotlib 才能决定放置这些点的位置。

labels = ['B','A','F','G','K','M']
mapping = {'B': 0,'A': 1,'F': 2,'G': 3,'K': 4,'M': 5}
df = df.replace({'Spec Type Index': mapping})

然后绘制散点图,

fig, ax = plt.subplots()
ax.scatter(df['Spec Type Index'], df['Disk Major Axis "'])

最后,

ax.set_xticklabels(labels)