【问题标题】:How can I make three legends corresponding to the bars of a bar plot?如何制作与条形图的条形相对应的三个图例?
【发布时间】:2016-07-12 04:00:10
【问题描述】:

这是我要创建的图像,但是,它应该有三个对应于条的图例。

这是代码:

import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3]
y=[399,499,100]
LABELS = ["node0", "node1", "failed"]
cr = ['g','r','b']
fig,ax = plt.subplots()
ax.bar(x,y,align='center',color=cr, Label='txed, rxed, failed')
plt.xticks(x, LABELS)
plt.legend()
plt.show()

【问题讨论】:

  • 能否请您澄清一下您对这三个传说中的每一个的期望?你有你想要的结果的示例草图吗?
  • 我是这个网站的新手,试过了只能上传图片,这里图片不直接出现,需要点击以上我的文字链接获取图片
  • 你想要三个图例吗?还是三个图例条目?
  • 非常感谢,你让我开心。还有一件事,你认为有没有简单的指南来学习 MatPlotLib,在它的官方网站上,它所有的混乱,关于图书馆等,我不是一个纯粹的计算机科学人,我应该如何学习。方法很复杂,每个人都用不同的方法来制作图表。

标签: numpy matplotlib


【解决方案1】:

我认为您应该一次绘制一条条:

import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3]
y=[399,499,100]
LABELS = ["node0", "node1", "failed"]
LEGENDS=['txed', 'rxed', 'failed']
cr = ['g','r','b']
fig,ax = plt.subplots()
for i in range(len(x)):
    ax.bar(x[i],y[i],align='center',color=cr[i], label=LEGENDS[i])
plt.xticks(x, LABELS)
plt.legend()
plt.show()

【讨论】:

  • 非常感谢您的回复。但是我想知道你为什么在这里使用数组,我总是对数组有问题,请问你可以在不使用数组的情况下制作相同的图表吗?
  • 您指的是哪些数组?我只使用列表。如果需要,您也可以编写 3 ax.bar 而不使用 for 循环。
  • @Schorsch:你给了我一个很好的解决方案,因为节点的数量是 2,但是如果我增加节点,传说也在增加,我只有 3 种数据包,Rxed ,Txed 并失败,但我必须绘制 8 个节点,所以有 8 个节点,我只想要 3 个图例,我该怎么做。请帮忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
相关资源
最近更新 更多