使用FigureCanvasTkAgg嵌入matplotlib图表 - 设置xticks

时间:2018-05-13 19:35:00

标签: python matplotlib tkinter tkinter-canvas

我正在创建一个包含各种嵌入式图表的GUI。我正在使用 matplotlib FigureCanvasTkAgg tkinter 这样做,除x轴标签外,一切正常。我可以在创建出现在新窗口中的matplotlib图表时使用 plt.xticks 轻松设置标签,但在使用 FigureCanvasTkAgg 时则不能。

我没有包含我的完整代码,因为它太长了,但我已经包含了我认为相关的所有代码(pyplot在别处使用但不应该与我的问题相关)。这里的 chart.set_xticks 实际上并没有做任何事情:它显示0而不是在标题为对象的列表中显示标签,而是显示0然后实际上与其他每个数据点一起向上移动根据下图标记。我已尝试使用 chart.set_xticks 进行各种不同的操作,但只能使用 chart.set_xticks([])删除所有标签,或使用 chart.set_xticks指定整数( [0,1,2,3 ...]),它标记每个数据点,但不标记我需要的标签。

有什么想法吗?

Bar chart without correct x labels

import matplotlib.pyplot as plt
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

objects = ["2x", "3x", "4x", "5x", "6x", "7x", "8x", "9x", "10x", "11x", "12x", "Year 2", "Year 3", "Year 4"]    
y_pos = np.arange(len(objects))

fig = Figure(figsize=(font * 8, font * 5))

chart = fig.add_subplot(111)
chart.set_ylim(ymin=0, ymax=32)
chart.bar(y_pos, plotList, color=colours, alpha=0.5, label="Table")
chart.bar(y_pos, inversePlotList, color=colours, label="Inverse")
chart.set_xticks(y_pos, objects)
chart.set_ylabel("Average score")
chart.legend()

canvas = FigureCanvasTkAgg(fig, master=userTablesFrame)
canvas.get_tk_widget().place(relx=0.5, rely=0.5, anchor=CENTER)
canvas.draw()

1 个答案:

答案 0 :(得分:0)

来自prefix them with MIX_

  

使用参数调用此函数是相当于在当前轴上调用set_xticks和set_xticklabels的pyplot。

因此,为了获得相同的行为,您应该同时使用set_xticksset_xticklabels

chart.set_xticks(y_pos)
chart.set_xticklabels(objects)
相关问题