Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何创建;填写“;默认样式-双端-带matplotlib的箭头?_Python_Matplotlib - Fatal编程技术网

Python 如何创建;填写“;默认样式-双端-带matplotlib的箭头?

Python 如何创建;填写“;默认样式-双端-带matplotlib的箭头?,python,matplotlib,Python,Matplotlib,我正在尝试使用annotate()向matplotlib绘图(轴)添加一个双端箭头 我希望头部之间的线条部分具有指定的宽度,而不仅仅是单个像素,并且理想情况下边缘和面颜色不同……因此基本上是“默认”箭头的双端版本-如下绿色所示 所以这就是我的问题——我似乎找不到一种方法来做到这一点。所有提到的解决方案都有折衷之处,如下所示 那么有人知道如何简单地(???)拥有注释箭头的默认(未指定箭头样式)版本的双端版本吗??? 事实上,在做这些示例时,我也注意到,更改ArrowProposo内的线宽意味着箭头

我正在尝试使用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的双头线。如果它有一个双头选项,默认(没有箭头样式集)格式会很好,但是它没有。好的,你能简单地描述一下你想要生成的箭头的类型吗。从图片上看,这些都不是你可以接受的,但我不知道应该是什么样子。对不起。。。在帖子里没有说清楚。我想要一个与默认箭头(无箭头样式集)完全相同的箭头(有面和边,线部分有一个宽度参数,这是一个多边形,不是一条线)-但有两个头部,而不是一个。。。我根本不知道该怎么做……我想也许有一群人在同一条船上:“嘿,默认箭头看起来不错,但我只需要一个双头箭头”……但我找不到任何选择