python - 使用 FigureCanvasTkAgg 嵌入 matplotlib 图表 - 设置 xticks
问题描述
我正在创建一个包含各种嵌入式图表的 GUI。我正在使用matplotlib和FigureCanvasTkAgg和tkinter来执行此操作,除了 x 轴标签外,一切正常。在创建出现在新窗口中的 matplotlib 图表时,我可以使用 plt.xticks 轻松设置标签,但在使用FigureCanvasTkAgg时却不行。
我没有包含我的完整代码,因为它太长了,但我已经包含了我认为相关的所有代码(pyplot 在其他地方使用但不应该与我的问题相关)。这里的chart.set_xticks实际上并没有做任何事情:它没有在标题为objects的列表中显示标签,而是显示 0 然后以整数上升,每个其他数据点实际上按照下图标记。我使用 chart.set_xticks 尝试了各种不同的东西,但只能使用 chart.set_xticks([]) 删除所有标签,或者使用chart.set_xticks([0,1,2,3...])指定整数,标签每个数据点但不是我需要的标签。
有任何想法吗?
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()
解决方案
从以下文档plt.xticks
:
使用参数调用此函数相当于在当前坐标轴上调用 set_xticks 和 set_xticklabels 的 pyplot。
因此,要获得相同的行为,您应该同时使用set_xticks
and set_xticklabels
:
chart.set_xticks(y_pos)
chart.set_xticklabels(objects)
推荐阅读
- python - 使用 Elastic Beanstalk 部署 Flask 应用程序时遇到问题
- python - 在python中使用硒通过浏览器保存图像
- java - 更新 AWS Elastic Beanstalk 环境:javax/xml/bind/JAXBException
- c# - 使 RB 运动更平滑/弯曲。C#。统一
- amazon-web-services - spring boot + 从不同的 AWS 账户加载秘密管理器秘密
- python - 如何在 Scapy (Python) 中添加 IP 嗅探过滤器
- javascript - 使用参数反应路由“Cannot GET /”
- sql - 两个表之间连接中的重复行
- flutter - dio颤动中的connectTimeout参数是什么
- laravel - Laravel 属性转换日期时间