如何使用matplotlib或pyqtgraph绘制这样的图形:
AB线是一条双向街道,绿色部分表示从点A到点B的方向,红色部分表示从B到A的方向,每个部分的宽度表示交通量。宽度以点为单位测量,在不同的缩放级别或dpi设置下不会改变。
这只是一个示例,实际上我有数百条街道。这种类型的图表在许多交通软件中非常常见。我尝试使用matplotlib的patheffect,但结果令人沮丧:
这只是一个示例,实际上我有数百条街道。这种类型的图表在许多交通软件中非常常见。我尝试使用matplotlib的patheffect,但结果令人沮丧:
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)
我的一个想法是将每条线的每个部分作为独立的线来处理,并在更改缩放级别时重新计算其位置,但这太复杂且速度较慢。
是否有使用matplotlib或pyqtgraph绘制我想要的内容的简单方法?任何建议将不胜感激!