首页 > 解决方案 > 如何将变量与 broken_bath 图一起使用?

问题描述

我希望能够在我的图表中使用变量作为值,因为这些值会经常变化。我正在尝试从包含所有必要数据的准备好的字典中获取值。

这就是我的想法,但我KeyError每次都遇到。

d = {'Bob Dole': [(1100, 700), (1100, 700), (0, 0), (0, 0), (1100, 700), (1100, 700), (1100, 700)]}
name = 'Bob Dole'
tuple_range = d[name[0]]

fig, ax = plt.subplots()
ax.broken_barh([tuple_range], (3, 4), facecolors='tab:blue')
ax.set_ylim(0, 30)
ax.set_xlim(800, 2100)
ax.set_xticks(x)
ax.set_xlabel('Time of Day')
ax.set_yticks([3, 6, 9, 12, 15, 18, 21])
ax.set_yticklabels(names)
ax.set_title('Monday')
ax.grid(True)

plt.show()

错误:

{'Bob Dole': [(1100, 700), (1100, 700), (0, 0), (0, 0), (1100, 700), (1100, 700), (1100, 700)]}
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.8/tkinter/__init__.py", line 1883, in __call__
return self.func(*args)
  File "ShiftScheduling.py", line 91, in display_selected_command
backend.display(selected_tuple[0])
  File "/user/Desktop/MachineLearning/MyPrograms/Sbackend.py", line 73, in display
sp.create_pairs(items)
  File "/user/Desktop/MachineLearning/MyPrograms/scheduleplot.py", line 140, in create_pairs
create_plot(names, times)
  File "/user/Desktop/MachineLearning/MyPrograms/scheduleplot.py", line 25, in create_plot
tuple_range = d[times[n]]
KeyError: (1100, 700)

标签: pythonpython-3.xmatplotlib

解决方案


我不太明白您要做什么,但是您的字典和访问元素存在问题。

name[0]将返回字符串的第一个字母,在本例中为B. 如果您想使用不同的键(这是我的理解),请遍历它们,例如。

for key in d:
    print(d[key])

或使用keys

for key in d.keys():
    print(d[key])

编辑如果您尝试访问每个键的元组的第一个值,只需索引为:

d[key][0][0]

如果您希望每个键的所有对始终是元组的第一个,那么:

for i in d[name]:
    print(i[0])

这有帮助吗?


推荐阅读