如何实现两个轴的正确顺序:
- a-b-c而不是c-a-b
- x-y-z而不是y-z-x
import matplotlib.pyplot as plt
categories_x = ["c", "a", "b", "c", "b"]
categories_y = ["y", "z", "y", "x", "z"]
plt.scatter(categories_x, categories_y)
plt.show()
SO上有很多解决方案,它们依赖于以下两个属性之一:
1.数据可以被转换为数字,例如(“1”,“0”,...)->转换为数值
1.只有一个轴的顺序错误->按这个轴对两个数组进行排序(这样做的原因是,轴记号是按第一次出现的顺序排序的)
但对于我的例子来说,这两种解决方案都不起作用。
我正在寻找一个解决方案,关于如何在matplotlib中使用它。我知道,还有其他可能更好的方式来传达同样的信息,或者其他库没有这个问题。
4条答案
按热度按时间iklwldmw1#
使用pandas和有序的Categorical怎么样?
输出:
ua4mk5z42#
我们可以使用sort函数将它们按顺序排列。
6tdlim6h3#
你可以用有序的字符串绘制第一个散点图,以正确设置刻度,然后隐藏它(或使用透明颜色)并绘制实际的图表:
sorted(set(categ...))
*jdzmm42g4#
简单地将所有内容转换为数值并使用x和y标记如何