title
How to add a Matplotlib Graph to Tkinter Window in Python 3 - Tkinter tutorial Python 3.4 p. 6
description
Tkinter GUI TutorialPlaylist: http://www.youtube.com/playlist?list=PLQVvvaa0QuDclKx-QpC9wntnURXVJqLyk
In this tkinter tutorial, we cover how you can insert a matplotlib graph into your tkinter GUI.
http://seaofbtc.com
http://sentdex.com
http://hkinsley.com
https://twitter.com/sentdex
Bitcoin donations: 1GV7srgR4NJx4vrk7avCmmVQQrqmv87ty6
detail
{'title': 'How to add a Matplotlib Graph to Tkinter Window in Python 3 - Tkinter tutorial Python 3.4 p. 6', 'heatmap': [{'end': 364.136, 'start': 338.311, 'weight': 0.809}, {'end': 759.646, 'start': 730.37, 'weight': 1}, {'end': 834.608, 'start': 804.943, 'weight': 0.726}], 'summary': 'Tutorial demonstrates the process of integrating matplotlib with tkinter to add a graph displaying bitcoin price, addressing user requests and updating matplotlib for style usage. it also covers the import of necessary modules for drawing a graph to a canvas for tkagg, adding a navigation bar to the graph, and making the graph live for data updating without page refreshing.', 'chapters': [{'end': 216.277, 'segs': [{'end': 50.317, 'src': 'embed', 'start': 5.145, 'weight': 0, 'content': [{'end': 8.186, 'text': 'Hey everyone, what is going on? Welcome to another TKinter tutorial video.', 'start': 5.145, 'duration': 3.041}, {'end': 14.192, 'text': "In this video, we're going to be talking about how we can add a graph to our TKinter window.", 'start': 8.367, 'duration': 5.825}, {'end': 18.575, 'text': 'So we want to graph the actual Bitcoin price at the time.', 'start': 14.772, 'duration': 3.803}, {'end': 24.319, 'text': 'And then, so for now, we need to figure out a way to stuff a Matplotlib graph into a TKinter window.', 'start': 18.955, 'duration': 5.364}, {'end': 32.806, 'text': 'So, for a lot of people, this has been a long time request because people want to either add buttons to Matplotlib or take away buttons and add..', 'start': 24.78, 'duration': 8.026}, {'end': 37.529, 'text': 'just add their own kind of flavor to their Matplotlib graphs.', 'start': 33.226, 'duration': 4.303}, {'end': 41.511, 'text': "So congratulations, here's your long-awaited video.", 'start': 38.269, 'duration': 3.242}, {'end': 50.317, 'text': "So this is our baseline application and then we're basically just going to, since we've got this application to add more pages,", 'start': 42.092, 'duration': 8.225}], 'summary': 'Tutorial on adding a matplotlib graph to a tkinter window for bitcoin price tracking.', 'duration': 45.172, 'max_score': 5.145, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP05145.jpg'}, {'end': 143.22, 'src': 'embed', 'start': 72.111, 'weight': 2, 'content': [{'end': 78.937, 'text': 'Unless, of course, you followed my older version of the Matplotlib styles where we just kind of worked around it.', 'start': 72.111, 'duration': 6.826}, {'end': 83.521, 'text': "Because for a while, Matplotlib styles was an ability, but it wasn't built into Matplotlib.", 'start': 78.957, 'duration': 4.564}, {'end': 87.684, 'text': 'But with the newest version, 1.4 of Matplotlib, you have Matplotlib styles.', 'start': 83.541, 'duration': 4.143}, {'end': 97.112, 'text': "So, if you don't have Matplotlib or you need to update Matplotlib, you can come to matplotlib.org and then go to Downloads.", 'start': 89.205, 'duration': 7.907}, {'end': 100.639, 'text': 'And then here are all your downloads.', 'start': 98.618, 'duration': 2.021}, {'end': 103.24, 'text': "If you're on a 32-bit Windows, here's your download.", 'start': 100.779, 'duration': 2.461}, {'end': 106.242, 'text': "If you're on a 64-bit Windows, here's your download.", 'start': 103.52, 'duration': 2.722}, {'end': 107.702, 'text': 'Download that.', 'start': 107.042, 'duration': 0.66}, {'end': 108.683, 'text': 'Install that.', 'start': 108.023, 'duration': 0.66}, {'end': 112.485, 'text': 'Also, obviously, make sure you match your version of Python.', 'start': 109.623, 'duration': 2.862}, {'end': 116.166, 'text': "So that's that.", 'start': 114.125, 'duration': 2.041}, {'end': 116.987, 'text': "That's Matplotlib.", 'start': 116.206, 'duration': 0.781}, {'end': 117.547, 'text': 'Download that.', 'start': 117.047, 'duration': 0.5}, {'end': 118.067, 'text': 'Install it.', 'start': 117.607, 'duration': 0.46}, {'end': 120.268, 'text': 'Make sure you can go to an idle window.', 'start': 118.107, 'duration': 2.161}, {'end': 121.709, 'text': 'So idle like this.', 'start': 120.368, 'duration': 1.341}, {'end': 125.491, 'text': "I'm not sure which one is 2 or 3, but I'll just pick one.", 'start': 123.15, 'duration': 2.341}, {'end': 129.651, 'text': 'And where is it? There we go.', 'start': 128.13, 'duration': 1.521}, {'end': 132.172, 'text': 'Okay Make sure you can do import matplotlib.', 'start': 129.991, 'duration': 2.181}, {'end': 143.22, 'text': "And then also, if you want to make sure, if you want to find out if you are on the current version or the most recent version that we're going to use,", 'start': 134.114, 'duration': 9.106}], 'summary': 'Matplotlib 1.4 introduces built-in styles. visit matplotlib.org for downloads and updates.', 'duration': 71.109, 'max_score': 72.111, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP072111.jpg'}], 'start': 5.145, 'title': 'Matplotlib integration in tkinter', 'summary': 'Covers adding a matplotlib graph to tkinter for displaying bitcoin price, addressing user requests and updating matplotlib for style usage, as well as detailing the process of downloading, installing, and configuring matplotlib for python compatibility.', 'chapters': [{'end': 87.684, 'start': 5.145, 'title': 'Adding matplotlib graph to tkinter', 'summary': 'Discusses adding a matplotlib graph to a tkinter window to display bitcoin price, addressing long-time user requests and the necessity of updating matplotlib for style usage.', 'duration': 82.539, 'highlights': ['The chapter addresses the long-time request of adding a Matplotlib graph to a TKinter window to display the Bitcoin price.', 'Users have been requesting the ability to customize Matplotlib graphs by adding or removing buttons to create their own style.', 'It is recommended to update to the newest version, 1.4 of Matplotlib, for using Matplotlib styles to customize graphs.']}, {'end': 216.277, 'start': 89.205, 'title': 'Installing and configuring matplotlib', 'summary': 'Details the process of downloading and installing matplotlib, ensuring compatibility with python, and configuring the backend for matplotlib usage.', 'duration': 127.072, 'highlights': ['The chapter provides instructions for downloading Matplotlib from matplotlib.org, including specific downloads for 32-bit and 64-bit Windows systems.', 'It emphasizes the importance of matching the Matplotlib version with the version of Python being used for compatibility.', 'The transcript highlights the process of checking the successful installation by importing matplotlib and checking the current version using import style.']}], 'duration': 211.132, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP05145.jpg', 'highlights': ['The chapter addresses the long-time request of adding a Matplotlib graph to a TKinter window to display the Bitcoin price.', 'Users have been requesting the ability to customize Matplotlib graphs by adding or removing buttons to create their own style.', 'It is recommended to update to the newest version, 1.4 of Matplotlib, for using Matplotlib styles to customize graphs.', 'The chapter provides instructions for downloading Matplotlib from matplotlib.org, including specific downloads for 32-bit and 64-bit Windows systems.', 'It emphasizes the importance of matching the Matplotlib version with the version of Python being used for compatibility.', 'The transcript highlights the process of checking the successful installation by importing matplotlib and checking the current version using import style.']}, {'end': 729.014, 'segs': [{'end': 322.017, 'src': 'embed', 'start': 290.428, 'weight': 0, 'content': [{'end': 296.532, 'text': "It's what's going to allow us to draw a Matplotlib graph to a canvas for TKAGG.", 'start': 290.428, 'duration': 6.104}, {'end': 298.654, 'text': 'And then also, this is the navigation toolbar.', 'start': 296.853, 'duration': 1.801}, {'end': 305.94, 'text': "If you're not familiar with Matplotlib, that's like the bar that allows you to go forward, back, home, save, zoom, all that stuff.", 'start': 298.674, 'duration': 7.266}, {'end': 307.541, 'text': 'So we want that, obviously.', 'start': 306.5, 'duration': 1.041}, {'end': 308.842, 'text': "So we'll get that.", 'start': 308.381, 'duration': 0.461}, {'end': 313.85, 'text': 'And also I will just say I did say obviously,', 'start': 311.167, 'duration': 2.683}, {'end': 322.017, 'text': "but there may be a scenario where you don't want that and you can actually get rid of that and you can even make your own buttons to make them look better.", 'start': 313.85, 'duration': 8.167}], 'summary': 'Integrating matplotlib graph to tkagg canvas with navigation toolbar for forward, back, home, save, zoom, etc.', 'duration': 31.589, 'max_score': 290.428, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0290428.jpg'}, {'end': 364.136, 'src': 'heatmap', 'start': 338.311, 'weight': 0.809, 'content': [{'end': 343.418, 'text': 'import, actually for matplotlib.figure, import capital F figure.', 'start': 338.311, 'duration': 5.107}, {'end': 347.763, 'text': "Okay, so that's all of the imports that we're going to need.", 'start': 344.158, 'duration': 3.605}, {'end': 349.165, 'text': "So I'm going to bring this up now.", 'start': 347.863, 'duration': 1.302}, {'end': 357.152, 'text': "And once you have that, we're ready to make our page three.", 'start': 353.63, 'duration': 3.522}, {'end': 364.136, 'text': "So to do that, we will retain one of the buttons, but we'll go ahead and not have all the buttons.", 'start': 357.392, 'duration': 6.744}], 'summary': 'Imported matplotlib.figure capital f figure for page three modification.', 'duration': 25.825, 'max_score': 338.311, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0338311.jpg'}, {'end': 424.457, 'src': 'embed', 'start': 397.43, 'weight': 3, 'content': [{'end': 401.251, 'text': "Boom Now we've got page three and we can navigate ourselves to page three.", 'start': 397.43, 'duration': 3.821}, {'end': 403.112, 'text': 'And then we also need a link to it.', 'start': 401.711, 'duration': 1.401}, {'end': 406.793, 'text': "So let's go ahead and add a link to it in our start page class.", 'start': 403.152, 'duration': 3.641}, {'end': 408.914, 'text': "So let's just copy and paste here.", 'start': 407.433, 'duration': 1.481}, {'end': 410.635, 'text': 'Whoops There we go.', 'start': 409.054, 'duration': 1.581}, {'end': 424.457, 'text': "pastes, call it button three, button three instead of that page two, page three, and then we'll call this graph page cool.", 'start': 412.255, 'duration': 12.202}], 'summary': 'Adding a link to page three in start page class.', 'duration': 27.027, 'max_score': 397.43, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0397430.jpg'}, {'end': 630.426, 'src': 'embed', 'start': 605.087, 'weight': 1, 'content': [{'end': 610.851, 'text': "And so in our matplotlib object here, we've got this lovely graph, but it's in the background.", 'start': 605.087, 'duration': 5.764}, {'end': 612.732, 'text': 'So now we want to pull it to the foreground.', 'start': 610.911, 'duration': 1.821}, {'end': 619.937, 'text': "Normally in matplotlib, you would basically run a plt.show, and boom, there's your graph.", 'start': 613.433, 'duration': 6.504}, {'end': 620.558, 'text': 'It would pop up.', 'start': 619.977, 'duration': 0.581}, {'end': 621.979, 'text': "Lovely But that's not what we want.", 'start': 620.738, 'duration': 1.241}, {'end': 623.36, 'text': 'We want it in our Tkinter window.', 'start': 622.019, 'duration': 1.341}, {'end': 630.426, 'text': "So we're basically going to have to do what plot.show typically does, minus a few things.", 'start': 623.92, 'duration': 6.506}], 'summary': 'Moving matplotlib graph to tkinter window, excluding plt.show features.', 'duration': 25.339, 'max_score': 605.087, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0605087.jpg'}], 'start': 217.377, 'title': 'Matplotlib and tkinter integration', 'summary': 'Covers the import of necessary modules for drawing a matplotlib graph to a canvas for tkagg and explains the purpose of the navigation toolbar, while also detailing the process of adding a graph to a tkinter page, including importing necessary modules, creating a new page, and displaying it in the tkinter window.', 'chapters': [{'end': 337.37, 'start': 217.377, 'title': 'Matplotlib import and usage', 'summary': 'Covers the import of necessary modules for drawing a matplotlib graph to a canvas for tkagg and explains the purpose of the navigation toolbar, while also mentioning the option to customize or remove it.', 'duration': 119.993, 'highlights': ['Import necessary modules for drawing a Matplotlib graph to a canvas for TKAGG, including figure and navigation toolbar, for enabling functionalities like forward, back, home, save, and zoom.', 'Explanation of the purpose of the navigation toolbar in Matplotlib, providing options for customization or removal based on specific requirements.']}, {'end': 729.014, 'start': 338.311, 'title': 'Adding graph to tkinter page', 'summary': 'Details the process of adding a graph to a tkinter page, including importing necessary modules, creating a new page, adding the graph to the canvas, and displaying it in the tkinter window, with a brief overview of matplotlib functionality.', 'duration': 390.703, 'highlights': ['The chapter details the process of adding a graph to a Tkinter page, including importing necessary modules, creating a new page, adding the graph to the canvas, and displaying it in the Tkinter window, with a brief overview of matplotlib functionality.', 'The process involves importing the necessary modules, creating a new page, renaming elements, and adding a link to navigate to the new page.', 'Adding the graph to the canvas involves defining a figure, adding a subplot, plotting the graph, and displaying it in the Tkinter window.']}], 'duration': 511.637, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0217377.jpg', 'highlights': ['Import necessary modules for drawing a Matplotlib graph to a canvas for TKAGG, including figure and navigation toolbar, for enabling functionalities like forward, back, home, save, and zoom.', 'The chapter details the process of adding a graph to a Tkinter page, including importing necessary modules, creating a new page, adding the graph to the canvas, and displaying it in the Tkinter window, with a brief overview of matplotlib functionality.', 'Explanation of the purpose of the navigation toolbar in Matplotlib, providing options for customization or removal based on specific requirements.', 'The process involves importing the necessary modules, creating a new page, renaming elements, and adding a link to navigate to the new page.', 'Adding the graph to the canvas involves defining a figure, adding a subplot, plotting the graph, and displaying it in the Tkinter window.']}, {'end': 1066.295, 'segs': [{'end': 759.646, 'src': 'heatmap', 'start': 730.37, 'weight': 1, 'content': [{'end': 737.094, 'text': "basically, basically it, I think, but we're gonna want, we want the navigation bar as well.", 'start': 730.37, 'duration': 6.724}, {'end': 744.179, 'text': "so we're gonna do, and actually would have to do, I think, one more thing, and let's go ahead and see if that would pop up, but I don't think so,", 'start': 737.094, 'duration': 7.085}, {'end': 744.759, 'text': "but we'll see.", 'start': 744.179, 'duration': 0.58}, {'end': 746.48, 'text': 'nope, there it is Okay.', 'start': 744.759, 'duration': 1.721}, {'end': 747.381, 'text': "so there's our graph.", 'start': 746.48, 'duration': 0.901}, {'end': 748.741, 'text': "It's actually inner T control window.", 'start': 747.421, 'duration': 1.32}, {'end': 753.943, 'text': "So at this point, we don't have like, that could be it, right? There's no navigation though.", 'start': 749.041, 'duration': 4.902}, {'end': 756.084, 'text': "So we can't really do anything with this chart.", 'start': 753.983, 'duration': 2.101}, {'end': 759.646, 'text': 'Normally matplotlib also displays like where your mouse is and stuff.', 'start': 756.544, 'duration': 3.102}], 'summary': 'Discussing the need for a navigation bar and issues with chart interactivity.', 'duration': 29.276, 'max_score': 730.37, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0730370.jpg'}, {'end': 795.283, 'src': 'embed', 'start': 764.848, 'weight': 0, 'content': [{'end': 770.61, 'text': "So, you know, if you don't want a navigation bar for whatever reason, that's how you could do the graph without a navigation bar.", 'start': 764.848, 'duration': 5.762}, {'end': 772.711, 'text': "Now let's close this.", 'start': 771.23, 'duration': 1.481}, {'end': 776.17, 'text': 'For those who want a navigation bar, what do we do??', 'start': 773.868, 'duration': 2.302}, {'end': 791.58, 'text': "So we'll come down here and we'll say toolbar equals, and then we're gonna say navigation toolbar, oops, not a capital B toolbar to TKAGG,", 'start': 776.59, 'duration': 14.99}, {'end': 795.283, 'text': 'mind the caps and then canvas self.', 'start': 791.58, 'duration': 3.703}], 'summary': 'Demonstrates creating a graph with and without a navigation bar', 'duration': 30.435, 'max_score': 764.848, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0764848.jpg'}, {'end': 834.608, 'src': 'heatmap', 'start': 804.943, 'weight': 0.726, 'content': [{'end': 812.824, 'text': 'And then finally canvas dot underscore TK canvas dot pack.', 'start': 804.943, 'duration': 7.881}, {'end': 819.666, 'text': "And then, um, let's go ahead and we're just gonna use the same rules for packing here.", 'start': 813.945, 'duration': 5.721}, {'end': 822.226, 'text': 'Copy that paste.', 'start': 820.946, 'duration': 1.28}, {'end': 824.907, 'text': "Uh, and now let's go ahead and run this.", 'start': 823.627, 'duration': 1.28}, {'end': 834.608, 'text': 'graph page and there are our, our typical navigations.', 'start': 827.005, 'duration': 7.603}], 'summary': 'Using canvas, packed with same rules, run graph page for typical navigations.', 'duration': 29.665, 'max_score': 804.943, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0804943.jpg'}, {'end': 1012.887, 'src': 'embed', 'start': 978.079, 'weight': 1, 'content': [{'end': 979.26, 'text': "This one's on the bottom as well.", 'start': 978.079, 'duration': 1.181}, {'end': 982.418, 'text': "Right, so anyways, that's how we can add a graph.", 'start': 980.017, 'duration': 2.401}, {'end': 988.199, 'text': 'Now, the next thing that we want to do is we want to learn how we can make this graph live.', 'start': 982.498, 'duration': 5.701}, {'end': 999.042, 'text': 'So the idea is to pull data either from the exchanges or from CUBTC and actually make the data update live without having to refresh the page.', 'start': 988.759, 'duration': 10.283}, {'end': 1002.023, 'text': 'So we can make it pretty easily just by clicking refresh or something like that.', 'start': 999.082, 'duration': 2.941}, {'end': 1006.485, 'text': 'But we want the page, the whole page, to refresh.', 'start': 1002.844, 'duration': 3.641}, {'end': 1012.887, 'text': 'And it turns out, actually, that we can do some pretty neat things, actually.', 'start': 1007.325, 'duration': 5.562}], 'summary': 'Exploring ways to make graphs update live from exchanges or cubtc without refreshing the whole page.', 'duration': 34.808, 'max_score': 978.079, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0978079.jpg'}, {'end': 1056.432, 'src': 'embed', 'start': 1021.99, 'weight': 2, 'content': [{'end': 1024.251, 'text': 'Because if you knew how to do something very similar in Tkinter,', 'start': 1021.99, 'duration': 2.261}, {'end': 1032.896, 'text': 'Maybe you could have a back-end daemon running and then you could have that daemon actually update the Tkinter window.', 'start': 1026.09, 'duration': 6.806}, {'end': 1037.682, 'text': "But I've actually found that it's really easy just to use matplotlib's animation function.", 'start': 1033.478, 'duration': 4.204}, {'end': 1043.166, 'text': "and while you're at it, why not make the animation function actually be your back-end, daemon?", 'start': 1037.682, 'duration': 5.484}, {'end': 1043.367, 'text': 'So', 'start': 1043.247, 'duration': 0.12}, {'end': 1047.868, 'text': "Anyway, you'll see what I mean in the coming video.", 'start': 1044.667, 'duration': 3.201}, {'end': 1056.432, 'text': "but yeah, next video, We'll actually make this graph live and we'll also we'll use matplotlib styles and make this graph look pretty quickly.", 'start': 1047.868, 'duration': 8.564}], 'summary': "Using matplotlib's animation function to create live graph updates in tkinter.", 'duration': 34.442, 'max_score': 1021.99, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP01021990.jpg'}], 'start': 730.37, 'title': 'Adding navigation bar to graph', 'summary': 'Demonstrates how to add a navigation bar to a graph using tkinter and matplotlib, and the potential for making the graph live and updating data without refreshing the page.', 'chapters': [{'end': 1066.295, 'start': 730.37, 'title': 'Adding navigation bar to graph', 'summary': 'Demonstrates how to add a navigation bar to a graph using tkinter and matplotlib, as well as the potential for making the graph live and updating data without refreshing the page.', 'duration': 335.925, 'highlights': ['The chapter demonstrates how to add a navigation bar to a graph using Tkinter and Matplotlib, providing a step-by-step guide for adding the navigation toolbar and customizing its position.', "It explains the potential for making the graph live by pulling data from exchanges or CUBTC and using Matplotlib's animation function to update the graph without page refresh.", "The chapter also discusses the possibility of using Matplotlib's animation function as a back-end daemon for updating the Tkinter window, and hints at upcoming content on making the graph look visually appealing using Matplotlib styles."]}], 'duration': 335.925, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/Zw6M-BnAPP0/pics/Zw6M-BnAPP0730370.jpg', 'highlights': ['The chapter demonstrates how to add a navigation bar to a graph using Tkinter and Matplotlib, providing a step-by-step guide for adding the navigation toolbar and customizing its position.', "It explains the potential for making the graph live by pulling data from exchanges or CUBTC and using Matplotlib's animation function to update the graph without page refresh.", "The chapter also discusses the possibility of using Matplotlib's animation function as a back-end daemon for updating the Tkinter window, and hints at upcoming content on making the graph look visually appealing using Matplotlib styles."]}], 'highlights': ['The chapter demonstrates the process of integrating matplotlib with tkinter to add a graph displaying bitcoin price, addressing user requests and updating matplotlib for style usage.', 'It is recommended to update to the newest version, 1.4 of Matplotlib, for using Matplotlib styles to customize graphs.', 'Import necessary modules for drawing a Matplotlib graph to a canvas for TKAGG, including figure and navigation toolbar, for enabling functionalities like forward, back, home, save, and zoom.', 'The chapter details the process of adding a graph to a Tkinter page, including importing necessary modules, creating a new page, adding the graph to the canvas, and displaying it in the Tkinter window, with a brief overview of matplotlib functionality.', 'The chapter demonstrates how to add a navigation bar to a graph using Tkinter and Matplotlib, providing a step-by-step guide for adding the navigation toolbar and customizing its position.', "It explains the potential for making the graph live by pulling data from exchanges or CUBTC and using Matplotlib's animation function to update the graph without page refresh."]}