【发布时间】:2021-02-28 18:45:09
【问题描述】:
我有一个看起来像这样的散点图:
| x
2 | x
| o
| o x
1 | x o
| o x o
| x x
|________________
foo bar baz
代码看起来像:
data = pd.read_csv("data", index_col = [0,1,2,3,4])
variable_x = data.xs("var_x", level = 0)
a_list = ["a1", "a2", "a3", "a4", "a5"]
b_list = variable_x.index.get_level_values(1).unique().to_list()
c_list = variable_x.index.get_level_values(2).unique().to_list()
colours = {"a1" : "r",
"a2" : "g",
"a3" : "b",
"a4" : "c",
"a5" : "k"
}
markers = {"b1" : "x",
"b2" : "o",
"b3" : "D",
"b4" : "X",
"b5" : "*"
}
fig, axs = plt.subplots(1, 3, sharey = True)
ax = axs[0]
for a in a_list:
color = colours[a]
for b in b_list:
marker = markers[b]
for c in c_list:
vals = variable_x.loc[:, a_list, :, :, :].xs(b, level = 1).xs(c, level = 2)
for val in vals:
ax.scatter(c, val, color = color, marker = marker, s = 5)
抱歉,如果我的伪代码不太合理,我可能从我的实际代码中错误地转移了它。
实际数据的点数要多得多,所以点的垂直线比较杂乱,难以区分。有没有办法调整x 和o 等的水平位置,使它们相距一小段距离但仍在正确的“bin”内?
【问题讨论】:
-
你愿意使用
seaborn吗?
标签: python python-3.x matplotlib scatter-plot