Forum
>>
Programmazione Python
>>
GUI
>>
matplotlib grafico con sfumatura
Pagina: Indietro 1 2
Esegui il login per scrivere una risposta.
Scritto da nuzzopippo |
2024-05-06 09:24:07 - Re: matplotlib grafico con sfumatura
|
Riguardo al codice che ho postato io, per ottenere la trasparenza è sufficiente mettere a 'none' color2, così
cm1 = LinearSegmentedColormap.from_list('Temperature Map', ['none', color1])l'effetto, con quel colore, non è un gran che. Ho dato 'na guardata al Tuo codice (dio, "customtkinter"!!), ho visto che utilizzi 5 diversi colori distribuiti orizzontalmente, tali ordini di colori vanno conservati? --- Ultima modifica di nuzzopippo in data 2024-05-06 09:24:49 --- Fatti non foste a viver come bruti... |
|
Scritto da Gabbo |
2024-05-06 09:38:01 - Re: matplotlib grafico con sfumatura
|
Si i colori li vorrei conservare.
Appena ho un attimo di tempo provo ad utilizzare la tua soluzione. Ho un altro problemino che non riesco a risolvere.. Quando uso canvas non appare la schitta sull'asse delle x ag.set_ylabel("Temperatura" , rotation = 'vertical',fontsize=10, color="w")# inserisco testo in y resta come nascosta. Ho provato a modificare i parametri di "figsize" e di "dpi" ma nulla da fare.. |
|
Scritto da nuzzopippo |
2024-05-06 11:19:15 - Re: matplotlib grafico con sfumatura
|
Mi ci son divertito un po', prova il codice che segue, credo facci quello che vuoi
from customtkinter import * import customtkinter as ctk import numpy as np from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure import Figure from matplotlib.colors import LinearSegmentedColormap ctk.set_appearance_mode('dark') ctk.set_default_color_theme('blue') app = ctk.CTk() app.geometry('800x440+1+1') g = Figure(figsize=(5.5,2.9) , dpi=100, layout='constrained', facecolor="#231e1f") # colore esterno grafico lightslategray ag = g.add_subplot(111) Xv = [] Yv = [] gry = [12, 40, 40, 60, 60, 72, 72, 73, 73, 78, 78] grx = [0, 28, 38, 58, 124, 136, 146, 147, 157, 162, 182] Color = ['m','m','g','g','b','b','c','c','y','y'] n3=0 n2=0 n1 = len(gry) for n in range (n1): m = grx[n] Xv.append(m) t = gry[n] Yv.append(t) if n2==1: col = Color[n3] ag.plot(Xv , Yv, c=col ,linewidth=1.3, ) # c= colore c='r' -marker='o' cml = LinearSegmentedColormap.from_list('Temperature Map', ['none', col]) polygon = ag.fill_between(Xv, Yv, lw=0, color='none') verts = np.vstack([p.vertices for p in polygon.get_paths()]) gradient = ag.imshow(np.linspace(0, 1, 256).reshape(-1, 1), cmap=cml, aspect='auto', origin='lower', extent=[verts[:, 0].min(), verts[:, 0].max(), verts[:, 1].min(), verts[:, 1].max()]) gradient.set_clip_path(polygon.get_paths()[0], transform=g.gca().transData) ag.fill_between(Xv , Yv, facecolor=col, alpha=0.2 ) #thistle del Xv[0] del Yv[0] n2=0 n3=n3+1 n2=n2+1 mt= 182 # Gestione parametri Grafico ag.set_xlabel("Tempo in Minuti",fontsize=10, color="w")# inserisco testo in x ag.set_ylabel("Temperatura" , rotation = 'vertical',fontsize=10, color="w")# inserisco testo in y ag.set_title("Grafico",fontsize=10, color="w")# inserisco testi in titolo ag.set_ylim(0, 100)# limite max grafico y ag.set_xlim(0,mt+10)# limite max grafico x ag.tick_params(colors='w') # which='both' ag.grid(axis="y", linestyle="dashed", color="b", alpha=0.5)# inserisco righe orizzontali linestyle = "dashed" ag.grid(axis="x", linestyle="None", color="b")# elimino righe orizzontali linestyle = "None" ag.set_facecolor("#231e1f")# colore interno grafico canvas = FigureCanvasTkAgg(g,app)# crea in Tkinter canvas - master = fin canvas.draw()# containing the Matplotlib figure # inserisco cavas in tkinter e inserisci la posizione (place in pixel) canvas.get_tk_widget().place(x = 180 , y = 50 ) if __name__ == "__main__": app.mainloop() Fatti non foste a viver come bruti... |
|
Scritto da Gabbo |
2024-05-06 12:28:50 - Re: matplotlib grafico con sfumatura
|
Bellissimo......
Bastava un semplice comando (layout='constrained') per risolvere il problema delle scritte. Rabe da matti, non sai quanto tempo che ho perso.... Grazie mille per le soluzioni... --- Ultima modifica di Gabbo in data 2024-05-06 12:29:11 --- |
|
Scritto da nuzzopippo |
2024-05-06 14:02:22 - Re: matplotlib grafico con sfumatura
|
beh ... dato che "Figure" serve per sostituire plot per generare una immagine nel canvas, io ho semplicemente immaginato che "dovesse" avere i metodi per controllare la rappresentazione grafica e, quindi, letta la Tua domanda, sono andato direttamente documentazione relativa, risolvendo in un paio di minuti ...
Una chicca : prova a commentare e de-commentare l'istruzione ag.fill_between(Xv , Yv, facecolor=col, alpha=0.2 ) #thistle vedrai una leggera differenza nella sfumatura ... penso stia meglio con questa istruzione attiva, ma è interessante imho Edit: mi è venuto in mente adesso, tempo fa su un sito aperto solo a me scrissi un appunto, giusto a mia promemoria, circa tkinter e matplotlib. La storia delle sfumature verticali trattata è interessante e l'esempio da Te proposto è decisamente carino, mi piacerebbe approfondire un po' l'argomento per poi inserirlo do seguito, giusto per tenerne traccia, tra un anno chi se ne ricorda più ... potrei utilizzare il Tuo esempio? --- Ultima modifica di nuzzopippo in data 2024-05-06 14:28:01 --- Fatti non foste a viver come bruti... |
|
Scritto da Gabbo |
2024-05-06 15:46:05 - Re: matplotlib grafico con sfumatura
|
Certo che puoi usare l'esempio... per mè sarebbe un onore.
ag.fill_between(Xv , Yv, # Valori da riempire facecolor=col, # colore di riempimento prende valori dalla lista color alpha=0.2 ) # Trasparenza del riempimento 0.2 grazie per la risposta |
Pagina: Indietro 1 2
Esegui il login per scrivere una risposta.