0

I implemented a chart in a canvas. I found examples of chart with two Y axes, but with plt.show() method . being a novice, how can I integrate a second Y axis into the canvas? Thanks for your help enter image description here

# coding:utf-8
#version 3.x python
 
from tkinter import *
import tkinter as tk
from tkinter import ttk
print("TkVersion", TkVersion)
print("TclVersion", TclVersion)
print("Python version", sys.version_info)
import sys; print('Python %s on %s' % (sys.version, sys.platform))
 
 
from pylab import *
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from mpl_toolkits.axes_grid1.anchord_artists import AnchoredAuxTransformBox
print("MatPlotLib version : ", matplotlib.__version__)
print('MatPlotLib version : {}'.format(matplotlib.__version__))
 
def _on_tab_changed(event):
    print("\n")

    nb = event.widget
    nb.update_idletasks()
 
    tab = nb.nametowidget(nb.select())

    nb.configure(height=tab.winfo_reqheight())
    nb.configure(width=tab.winfo_reqwidth())
 
 
def Create_notebook(master=None, **kw):
    nb = ttk.Notebook(master, **kw)
    nb.bind("<<NotebookTabChanged>>", _on_tab_changed)
    return nb
 
root = tk.Tk()
root.title("Titre")
root.resizable(False, False)
 
window_height = 800
window_width = 900
 
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
 
x_cordinate = int((screen_width/2) - (window_width/2))
y_cordinate = int((screen_height/2) - (window_height/2))
 
root.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))
 
RightFrame = tk.LabelFrame(root, text="[Label]", font=('verdana', 8, ''), foreground="blue", > relief=SOLID, borderwidth=0)
RightFrame.place(x=130, y=5, width=900, height=900)
RightFrame.anchor(anchor="center")
 
notebook = Create_notebook(RightFrame)
notebook.add(tk.Frame(notebook, bg="white", width=709, height=725, name="1"), text="GRAPH")
notebook.place(x=5, y=5)

Liste_TEST = [11.81, 4.91, 4.62, 4.19, 4.35, 4.22, 4.03, 4.31, 4.06, 4.23, 4.01, 4.28, 4.06, > 3.81, 4.05, 4.04, 4.13, 4.08, 3.99, 4.05, 4.15, 4.26, 4.3, 4.35, 4.77, 4.65, 4.77, 4.52, 4.6]
 
chiffre_inf = IntVar()
chiffre_inf.set(floor(min(Liste_TEST)))
chiffre_sup = IntVar()
chiffre_sup.set(ceil(max(Liste_TEST)))
 
fig = plt.Figure(figsize=(1, 1), dpi=96)
 
ax = fig.add_subplot(1, 1, 1, frameon=True)
 
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
 
ax.spines['bottom'].set_color('#000000')
 
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
ax.spines['left'].set_color('#000000')
 
ax.tick_params(labelcolor='#000000', top=False, bottom=True, left=True, right=False)
 
plt.xlim(1, len(Liste_TEST))
plt.ylim(chiffre_inf.get(), chiffre_sup.get())
 
major_ticks = np.arange(chiffre_inf.get(), chiffre_sup.get(), 1)
minor_ticks = np.arange(chiffre_inf.get(), chiffre_sup.get(), 0.5)
ax.set_yticks(major_ticks * 1)
ax.set_yticks(minor_ticks * 1, minor=True)
ax.grid(which='minor', alpha=0.2)
ax.grid(which='major', alpha=0.5)
ax.grid(True)
 
ax.set_xlabel("Nombre de plein(s)", fontsize=6)
ax.set_ylabel("Litre(s)", fontsize=6)
ax.set_title("<" + "Titre tableau" + ">", fontsize=8, color='dimgrey')
 
print("Liste_TEST >", Liste_TEST)
ax.plot(range(len(Liste_TEST)), Liste_TEST, color="red", linewidth=.85, linestyle="dotted", > label='Effective')
 
graph = FigureCanvasTkAgg(fig, master=notebook.winfo_children()[0])
canvas = graph.get_tk_widget()
canvas.config(width=700, height=370, relief=RIDGE, borderwidth=2)
canvas.place(x=2, y=50)
 
root.mainloop()
Thingamabobs
  • 7,274
  • 5
  • 21
  • 54
Taratata
  • 1
  • 1
  • [Does this help you out](https://stackoverflow.com/a/14762601/13629335) ? – Thingamabobs Feb 19 '22 at 10:09
  • 1
    Does this answer your question? [Adding a y-axis label to secondary y-axis in matplotlib](https://stackoverflow.com/questions/14762181/adding-a-y-axis-label-to-secondary-y-axis-in-matplotlib) – Jody Klymak Feb 19 '22 at 11:30

0 Answers0