python - Matplotlib 中的线端样式
问题描述
我想创建一个显示一堆不同时间间隔的图,这些时间间隔都是半开的。绘制范围本身很容易,但我想做的是指定一种线型,自动绘制方括号和圆括号以表示间隔是半开的,而无需手动单独绘制它们,或放置文本。
目前使用 Matplotlib,但如果这会使问题更容易,我愿意使用其他库。
解决方案
我不确定是否有这样的功能,但您总是可以创建一个,例如:
import matplotlib as mpl
import matplotlib.pyplot as plt
def add_interval(ax, xdata, ydata, caps=" "):
line = ax.add_line(mpl.lines.Line2D(xdata, ydata))
anno_args = {
'ha': 'center',
'va': 'center',
'size': 24,
'color': line.get_color()
}
a0 = ax.annotate(caps[0], xy=(xdata[0], ydata[0]), **anno_args)
a1 = ax.annotate(caps[1], xy=(xdata[1], ydata[1]), **anno_args)
return (line,(a0,a1))
fig, ax = plt.subplots()
add_interval(ax, (3,7), (3,3), "()")
add_interval(ax, (2,6), (2,2), "[]")
add_interval(ax, (1,5), (1,1), "(]")
plt.xlim((0,8))
plt.ylim((0,4))
plt.show()
推荐阅读
- asp.net-web-api - 中介 Api 调用失败
- java - JavaFX Integer Spinner (IntegerSpinnerValueFactory) 不会将值环绕到最小值
- glsl - WebGL:在不借助 THREE.JS 的情况下添加镜面光
- fortran - 包含 IEEE_GET_ROUNDING_MODE 的库的 gfortran 链接器参数
- spring - Combine multiple Monos into a flux
- php - AJAX inserting data for username-check, results in duplicated div elements and no data
- graphviz - How to draw labels last to make sure they are not obscured?
- ruby-on-rails - Rails 通过查找值在 sort_ 中应用条件
- rust - 如何从具有“静态边界”的闭包中构造容器?
- spring-mvc - spring mvc中基于注释的处理程序映射