Python 如何创建;填写“;默认样式-双端-带matplotlib的箭头?
我正在尝试使用annotate()向matplotlib绘图(轴)添加一个双端箭头 我希望头部之间的线条部分具有指定的宽度,而不仅仅是单个像素,并且理想情况下边缘和面颜色不同……因此基本上是“默认”箭头的双端版本-如下绿色所示 所以这就是我的问题——我似乎找不到一种方法来做到这一点。所有提到的解决方案都有折衷之处,如下所示 那么有人知道如何简单地(???)拥有注释箭头的默认(未指定箭头样式)版本的双端版本吗??? 事实上,在做这些示例时,我也注意到,更改ArrowProposo内的线宽意味着箭头不再与起点和终点完全匹配Python 如何创建;填写“;默认样式-双端-带matplotlib的箭头?,python,matplotlib,Python,Matplotlib,我正在尝试使用annotate()向matplotlib绘图(轴)添加一个双端箭头 我希望头部之间的线条部分具有指定的宽度,而不仅仅是单个像素,并且理想情况下边缘和面颜色不同……因此基本上是“默认”箭头的双端版本-如下绿色所示 所以这就是我的问题——我似乎找不到一种方法来做到这一点。所有提到的解决方案都有折衷之处,如下所示 那么有人知道如何简单地(???)拥有注释箭头的默认(未指定箭头样式)版本的双端版本吗??? 事实上,在做这些示例时,我也注意到,更改ArrowProposo内的线宽意味着箭头
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_xlim(0, 2)
ax.set_ylim(-2, 2)
ax.annotate('', (0.3,-0.5), (0.2,1.0), arrowprops=dict(facecolor='green',
width=5, headwidth=15))
ax.annotate('', (0.5,-0.5), (0.4,1.0), arrowprops=dict(facecolor='red',
arrowstyle='<|-|>',
mutation_scale=30))
# try two arrows in opposite directions
#...mess unless you calculate how much
# to subtract off for the otherdirections "head" (ugly trying to switch coord
# systems) ...and even if you do that you will have one overlapping the other,
# so a edge colored line drawn across one somewhere
ax.annotate('', (0.7,-0.5), (0.6,1.0), arrowprops=dict(facecolor='yellow',
width=5, headwidth=15))
ax.annotate('', (0.6,1.0), (0.7,-0.5), arrowprops=dict(facecolor='yellow',
width=5, headwidth=15))
# mutation scale just scales the size of the arrow head
ax.annotate('', (1.0,-0.5), (0.9,1.0), arrowprops=dict(facecolor='red',
arrowstyle='<|-|>',
mutation_scale=60))
# try just simply increasing linewidth
# this doesn't really work either, because the heads become rounded and you start
# to loose the inside of the head
# ALSO THE ENDS OF THE ARROW DON'T MATCH THE COORDS ANY MORE - see below
ax.annotate('', (1.3,-0.5), (1.2,1.0), arrowprops=dict(facecolor='red',
edgecolor='blue',
arrowstyle='<|-|>',
mutation_scale=30,
lw=8))
ax.axhline(y=-0.5, color='r')
ax.axhline(y=1.0, color='r')
将matplotlib.patches作为MPatch导入
将matplotlib.pyplot作为plt导入
图,ax=plt.子批次()
ax.set_xlim(0,2)
ax.set_ylim(-2,2)
ax.注释(“”,(0.3,-0.5),(0.2,1.0),arrowprops=dict(facecolor='green',
宽度=5,头部宽度=15)
ax.注释(“”,(0.5,-0.5),(0.4,1.0),arrowprops=dict(facecolor='red',
箭头样式=“”,
突变(U标度=30)
#试试两个方向相反的箭头
#除非你计算出多少
#减去其他方向的“头”(丑陋的尝试切换坐标)
#系统)…即使你这样做,你也会有一个重叠的另一个,
#所以在某个地方画了一条边色线
ax.注释(“”,(0.7,-0.5),(0.6,1.0),arrowprops=dict(facecolor='yellow',
宽度=5,头部宽度=15)
ax.注释(“”,(0.6,1.0),(0.7,-0.5),arrowprops=dict(facecolor='yellow',
宽度=5,头部宽度=15)
#突变比例只是缩放箭头的大小
ax.注释(“”,(1.0,-0.5),(0.9,1.0),arrowprops=dict(facecolor='red',
箭头样式=“”,
突变(U标度=60)
#试着简单地增加线宽
#这也不起作用,因为头部变圆了,你就开始
#松开头部内侧
#此外,箭头的末端不再与坐标匹配-请参见下文
ax.注释(“”,(1.3,-0.5),(1.2,1.0),arrowprops=dict(facecolor='red',
edgecolor='blue',
箭头样式=“”,
突变量表=30,
lw=8)
ax.axhline(y=-0.5,color='r')
ax.axhline(y=1.0,color='r')
默认情况下,注释没有任何箭头,对吗?因此,需要指定箭头样式。从这个意义上说,我不确定我是否理解这个问题。对不起,如果我没有说清楚的话……这是关于可用样式的问题。似乎没有任何简单/好的方法来制作线宽大于1的双头线。如果它有一个双头选项,默认(没有箭头样式集)格式会很好,但是它没有。好的,你能简单地描述一下你想要生成的箭头的类型吗。从图片上看,这些都不是你可以接受的,但我不知道应该是什么样子。对不起。。。在帖子里没有说清楚。我想要一个与默认箭头(无箭头样式集)完全相同的箭头(有面和边,线部分有一个宽度参数,这是一个多边形,不是一条线)-但有两个头部,而不是一个。。。我根本不知道该怎么做……我想也许有一群人在同一条船上:“嘿,默认箭头看起来很棒,但我只需要一个双头的”……但是没有选择,我可以通过默认注释找到。默认注释没有任何箭头,对吗?因此,需要指定箭头样式。从这个意义上说,我不确定我是否理解这个问题。对不起,如果我没有说清楚的话……这是关于可用样式的问题。似乎没有任何简单/好的方法来制作线宽大于1的双头线。如果它有一个双头选项,默认(没有箭头样式集)格式会很好,但是它没有。好的,你能简单地描述一下你想要生成的箭头的类型吗。从图片上看,这些都不是你可以接受的,但我不知道应该是什么样子。对不起。。。在帖子里没有说清楚。我想要一个与默认箭头(无箭头样式集)完全相同的箭头(有面和边,线部分有一个宽度参数,这是一个多边形,不是一条线)-但有两个头部,而不是一个。。。我根本不知道该怎么做……我想也许有一群人在同一条船上:“嘿,默认箭头看起来不错,但我只需要一个双头箭头”……但我找不到任何选择