提供以下数据:
mock_data_x = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3]
mock_data_y = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
mock_data_val = [
"a",
"b",
"c",
"d",
"e",
"d",
"e",
"a",
"b",
"c",
"d",
"a",
"b",
"e",
"c",
]
df_mock = pd.DataFrame(dict(x=mock_data_x, y=mock_data_y, v=mock_data_val,))
其外观为:
x y v
0 1 1 a
1 1 2 b
2 1 3 c
3 1 4 d
4 1 5 e
5 2 1 d
6 2 2 e
7 2 3 a
8 2 4 b
9 2 5 c
10 3 1 d
11 3 2 a
12 3 3 b
13 3 4 e
14 3 5 c
我可以创建以下情节:
fig, ax = plt.subplots(figsize=(8, 5))
x_axis_labels = ["one", "two", "three"]
values = df_mock["v"].unique()
for val in values:
dt = df_mock[df_mock["v"].eq(val)]
ax.scatter(dt["x"], dt["y"])
ax.plot(dt["x"], dt["y"])
positions = [1, 2, 3]
labels = ["r", "q"]
_ = plt.xticks(positions, x_axis_labels)
外观为:
我觉得好像应该替代该行
_ = plt.xticks(positions, x_axis_labels)
实际上使用ax
对象而不是plt
的对象。
我看过dir(ax)
和dir(ax.xaxis)
,但我不清楚应该使用它来实现这一目标。
ax
的等效项是:ax.set_xticks(positions)
ax.set_xticklabels(x_axis_labels)
您会得到几乎相同的情节。