Wie verwenden matplotlib oder pyqtgraph draw Stück so zeichnen: Wie „zwei Richtungen Breiten line“ in matplotlib
Linie AB ist eine Zwei-Richtungen-Straße, stellt grüner Teil die Richtung vom Punkt A zum Punkt B, roter Teil stellt B zu A dar, Breite jedes Teils stellt das Verkehrsvolumen dar. Breiten werden in Punkt gemessen, werden nicht bei verschiedenen Zoomstufen oder dpi-Einstellungen geändert.
Dies ist nur ein Beispiel, in der Tat habe ich Hunderte von Straßen. Diese Art von Handlung ist in vielen Verkehrssoftware sehr häufig. Ich habe versucht, matplotlib der patheffect zu verwenden, aber Ergebnis ist frustriert:
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)
Eine Idee kam mir ist jeder Teil der Leitung als eigenständige Linie zu nehmen und neu zu berechnen es Position ist, wenn Zoomstufe zu ändern, aber es ist zu kompliziert und langsam.
Wenn es eine einfache Möglichkeit gibt, matplotlib oder pyqtgraph zu verwenden, zeichnen, was ich will? Jeder Vorschlag wird geschätzt!
Ihre Zahlen arbeiten nicht – Bart
Tut mir leid, ich repariere es. @ Bart – Macer
Nein, funktioniert immer noch nicht .. Warum nicht die Bild-Uploader von stackoverflow zur Verfügung gestellt? – Bart