鱼C论坛

 找回密码
 立即注册
查看: 4092|回复: 2

求助:关于matplotlib的图表在FigureCanvasTkAgg画布中摆放位置的问题

[复制链接]
发表于 2019-3-29 20:01:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 yysscc 于 2019-3-29 20:01 编辑
  1. from tkinter import *
  2. import pymysql
  3. from pandas import *
  4. import numpy as np
  5. from matplotlib import pyplot as plt
  6. import matplotlib
  7. from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
  8. from matplotlib.figure import Figure
  9. from matplotlib.pylab import mpl

  10. db = pymysql.connect('localhost','root','root','medicine')
  11. cur = db.cursor()
  12. sql = 'select * from user'
  13. cur.execute(sql)
  14. user_x = []
  15. user_y = []
  16. results = list(cur.fetchall())
  17. for row in results:
  18.     user_x.append(row[0])
  19.     user_y.append(row[1])
  20. x = user_x
  21. y = user_y
  22. data = np.array([user_x,user_y])
  23. df = DataFrame(data.T,columns=["账号","密码"])
  24. matplotlib.use('TkAgg')
  25. mpl.rcParams['font.sans-serif'] = ['SimHei']
  26. root = Tk()  
  27. f = plt.figure()
  28. a = f.add_subplot(111,frameon=False,xticks=[],yticks=[])   #第一个问题的点应该在这,table是在这个坐标系上面的,我想应该能改变坐标系位置来改变table位置
  29. a.set_title("这是第一副图",loc='center',pad=20,fontsize='xx-large')
  30. table = plt.table(cellText=data.T,colLabels=["账号","密码"],rowLabels=df.index,colWidths=[0.1]*data.shape[1],loc='center',cellLoc='center')
  31. table.set_fontsize(15)
  32. table.scale(5,3)
  33. canvas = FigureCanvasTkAgg(f, master=root)
  34. canvas.draw()
  35. canvas.get_tk_widget().grid(row=0, columnspan=3)    #第二个问题大概在这里,应该能通过设置参数让canvas延长,请大佬帮忙指教。
  36. root.mainloop()
复制代码
有两个问题:第一个是如何设置table在canvas中的位置呢,我想让它靠左边,而不是居中,                  
第二个是如何设置能让canvas自动向下延伸,就是说表格长的话canvas能延长把所有表格包裹进去
等级太低不能发图片,大佬见谅
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-1 18:27:06 | 显示全部楼层
同求!有大佬知道吗??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-1 19:43:28 | 显示全部楼层
个人建议:
   1. 放弃这种matplotlib内嵌的方式,因为这会搞得很复杂或难以实现,这不是matplotlib擅长的。
   2. 分两步来解决:先将 table图片化保存,再用tkinker单独将图片展示出来,这样只要你会用tkinter的grid()方法就可以解决问题。
   3. 或者 不图片化,而是 直接用tkinter的Treeview来展示 表格数据。(推荐)
  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 23:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表