需要在柱状图标签中使用matplotlib散点标记

6 投票
2 回答
2336 浏览
提问于 2025-04-17 07:27

我有一个散点图,里面用六种不同的符号来表示点。比如,下面的代码就用一个朝下的三角形符号来画一个点:

my_axis.scatter([x], [y], marker='v')

每个符号代表一种不同的对象类别。我需要在另一个图表中提到散点图中使用的符号,这个图表是一个柱状图,用来解释每个类别在散点图中每个聚类的比例。

我该如何让柱状图的标签使用散点图中用的符号呢?正如你在下面的图片中看到的,每个柱子下的标签应该对应图表中的标记,但它们并没有对应,因为我不知道如何在散点图之外调用这些标记。现在显示的只是标记的代码字母(例如,显示“v”而不是一个真实的三角形)。

忽略那些重叠的百分比线,那是另一个我会解决的问题。

如果这些符号是我能找到的UTF-8符号,我可以手动把它们加到柱状图的图例里,但我还没找到每个标记对应的确切字符。

我也在考虑使用.text()来直接使用UTF-8字符,而不是.scatter(),但很多符号即使我选择了带字体属性的Unicode字体,仍然会显示成方块,所以我在这方面也遇到了困难。

谢谢你的帮助!

散点图和柱状图

2 个回答

0

看起来使用Unicode或LaTeX文本是最好的解决办法,具体可以参考这个链接:

http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg19442.html

我会在弄清楚更多细节后再补充。

3

使用 Latex 是个相对简单的解决方案。例如:

from matplotlib import rc
rc('text', usetex=True)
plt.xticks(ind+width/2., ("$\lozenge$", "$\square$", "$\plus$", "o", "$\bigtriangledown$") )

如果你需要帮助来找出符号的名称,这个网站非常好用,你可以在上面画出你想要的符号,它会告诉你对应的LaTex名称。

撰写回答