python - 画布中的图表
问题描述
我正在尝试在 Canvas 中显示折线图(字符串和数字),如数组中所示。我从这个论坛的不同问题中得到了这段代码,试图根据我的要求进行修改。有人可以指导我吗?
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({"Week": ['Week1','Week2','Week3','Week4','Week5'],
"App1" : [2.6,3.4,3.25,2.8,1.75],
"App2" : [2.5,2.9,3.0,3.3,3.4],
"App3" : [1.6,2.4,1.25,5.8,6.75]})
df.plot(x="Week", y=["App1", "App2", "App3"])
plt.show()
解决方案
这是一个,以防其他人在寻找。
# --- matplotlib ---
import matplotlib
matplotlib.use('TkAgg') # choose backend
from tkinter import messagebox
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,
NavigationToolbar2TkAgg
from matplotlib.pyplot import Figure
from matplotlib import pyplot as plt
# --- other ---
import tkinter as tk
import pandas as pd
# --- GUI ---
root = tk.Tk()
# top frame for canvas and toolbar - which need `pack()` layout manager
top = tk.Frame(root)
top.pack()
# bottom frame for other widgets - which may use other layout manager
bottom = tk.Frame(root)
bottom.pack()
# create figure
fig = matplotlib.pyplot.Figure()
# create matplotlib canvas using `fig` and assign to widget `top`
canvas = FigureCanvasTkAgg(fig, top)
# get canvas as tkinter widget and put in widget `top`
canvas.get_tk_widget().pack()
canvas._tkcanvas.pack()
# --- plot ---
data = {"Week": ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],
"App1" : [2.6,3.4,3.25,2.8,1.75,5,2],
"App2" : [2.5,2.9,3.0,3.3,3.4,5,3],
"App3" : [1.6,15,1.25,5.8,6.75,6,4]
}
new_df = pd.DataFrame(data)
ax = fig.add_subplot(111)
fig.suptitle('Graph Title', fontsize=12)
new_df.plot(x="Week", y=["App1", "App2", "App3"],ax=ax)
def on_closing():
root.destroy()
root.protocol("WM_DELETE_WINDOW", on_closing)
root.lift()
root.attributes('-topmost',True)
root.mainloop()
推荐阅读
- javascript - 控制反应中的复选框
- atom-editor - Atom:无法加载 en_IN 的系统字典。检查字典文件的以下路径:
- python - 熊猫数据框到数量总和的重复矩阵
- jmeter - JMeter - 将 Beanshell 用作带有文件的 JSR223 采样器时出现异常
- html - Bootstrap Popover 全屏带边距
- python - 机器学习检查 IBAN 校验和
- python - Python numpy 数组操作
- java - 如何在 SQLite 中以插入的相反顺序选择表行?
- javascript - 是否可以在 GraphQL 对象类型中定义包含井号字符 (#) 的字段?一般用来写评论
- asp.net - 如何为 Linux 上托管的 ASPNET 核心应用程序的错误过滤 journalctl 日志