Я создаю графический интерфейс, который включает в себя множество встроенных диаграмм. Для этого я использую matplotlib и FigureCanvasTkAgg с tkinter , и все отлично работает, кроме меток оси x. Я могу легко установить метки с помощью plt.xticks при создании диаграммы matplotlib, которая появляется в новом окне, но не при использовании FigureCanvasTkAgg .
Я не включил свой полный код, так как он слишком длинный, но я включил весь код, который я считаю релевантным (pyplot используется в другом месте, но не должен относиться к моей проблеме). chart.set_xticks здесь на самом деле ничего не делает: вместо отображения меток в списке с заголовком objects , он показывает 0, затем поднимается в целых числах с каждой другой точкой данных, фактически помеченной как согласно изображению ниже. Я пробовал разные вещи, используя chart.set_xticks , но могу удалить только все метки, используя chart.set_xticks ([]) или указать целые числа, используя chart.set_xticks ([0 , 1,2,3 ...]) , которая помечает каждую точку данных, но не соответствует меткам, которые мне требуются.
Есть идеи?
![Bar chart without correct x labels](https://i.stack.imgur.com/35t9A.png)
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()