Come usare matplotlib o trama pareggio pyqtgraph come questo: Come disegnare "due direzioni larghezza delle linee" in matplotlib
Line AB è una strada a due direzioni, parte verde rappresenta la direzione dal punto A al punto B, la parte rossa rappresenta B a A, la larghezza di ciascuna parte rappresenta il volume del traffico. Le larghezze sono misurate in punti, non saranno modificate a diversi livelli di zoom o impostazioni dpi.
Questo è solo un esempio, in effetti ho centinaia di strade. Questo tipo di trama è molto comune in molti software di traffico. Ho cercato di usare patheffect di matplotlib ma risultato è frustrato:
from matplotlib import pyplot as plt
import matplotlib.patheffects as path_effects
x=[0,1,2,3]
y=[1,0,0,-1]
ab_width=20
ba_width=30
fig, axes= plt.subplots(1,1)
center_line, = axes.plot(x,y,color='k',linewidth=2)
center_line.set_path_effects(
[path_effects.SimpleLineShadow(offset=(0, -ab_width/2),shadow_color='g', alpha=1, linewidth=ab_width),
path_effects.SimpleLineShadow(offset=(0, ba_width/2), shadow_color='r', alpha=1, linewidth=ba_width),
path_effects.SimpleLineShadow(offset=(0, -ab_width), shadow_color='k', alpha=1, linewidth=2),
path_effects.SimpleLineShadow(offset=(0, ba_width), shadow_color='k', alpha=1, linewidth=2),
path_effects.Normal()])
axes.set_xlim(-1,4)
axes.set_ylim(-1.5,1.5)
Un'idea mi è venuta è quello di prendere ogni parte della linea come una linea stand-alone, e ricalcolare la sua posizione quando si cambia il livello di zoom, ma è troppo complicato e lento.
Se c'è un modo semplice per usare matplotlib o pyqtgraph disegnare quello che voglio? Ogni suggerimento sarà apprezzato!
I tuoi dati non funzionano – Bart
Mi dispiace, lo riparo. @ Bart – Macer
No, ancora non funziona .. Perché non utilizzare il uploader di immagini fornito da stackoverflow? – Bart