Forum >> Programmazione Python >> GUI >> matplotlib grafico con sfumatura

Pagina: Indietro 1 2

Si sembra propri quello ma vorrei sfumare il fondo per farlo arrivare trasparente.

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...
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..






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...
Bellissimo......




Bastava un semplice comando (layout='constrained') per risolvere il problema delle scritte.




Rabe da matti, non sai quanto tempo che ho perso.... :thinking:




Grazie mille per le soluzioni...


--- Ultima modifica di Gabbo in data 2024-05-06 12:29:11 ---
Bastava un semplice comando (layout='constrained') per risolvere il problema delle scritte.
Rabe da matti, non sai quanto tempo che ho perso.... :thinking:
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...
Bastava un semplice comando (layout='constrained') per risolvere il problema delle scritte.
Rabe da matti, non sai quanto tempo che ho perso.... :thinking:
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 ---
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.