使箭头形状对称,与matplotlib中箭头的角度无关

时间:2018-10-02 16:44:11

标签: python matplotlib

以下代码产生下图。箭头的形状取决于箭头的角度。如何使所有箭头具有相同的对称形状?我专门要求使用Python 3,但欢迎使用通用解决方案。

import matplotlib.pyplot as plt
plt.arrow(0, 0, .5, .5, head_width = .1)
plt.arrow(0, 0, .2, .5, head_width = .1)
plt.arrow(0, 0,  0, .5, head_width = .1)
plt.axis((-1, 1, -1 ,1))
plt.show()

arrow head demo

2 个答案:

答案 0 :(得分:2)

plt.arrow无法实现。 我猜想plt.arrow仍然存在的原因纯粹是为了向后兼容。 matplotlib.patches.FancyArrowPatch可以更好地产生箭头。在情节中获得此类FancyArrowPatch的最简单方法是通过plt.annotate

import matplotlib.pyplot as plt

prop = dict(arrowstyle="-|>,head_width=0.4,head_length=0.8",
            shrinkA=0,shrinkB=0)

plt.annotate("", xy=(.5,.5), xytext=(0,0), arrowprops=prop)
plt.annotate("", xy=(.2,.5), xytext=(0,0), arrowprops=prop)
plt.annotate("", xy=(.0,.5), xytext=(0,0), arrowprops=prop)

plt.axis((-1, 1, -1 ,1))
plt.show()

enter image description here

目前,箭头文档的文献很少,但是a plan to write up仍然有一些完整的教程或指南。

答案 1 :(得分:-2)

以相等的轴纵横比调整绘图很有用。

       for _ in json.releases {
        let newRecord = routine()

        newRecord.dateadded = json.releases[i].date_added
        newRecord.title = json.releases[i].basic_information.title
        newRecord.artist = json.releases[i].basic_information.artists[0].name
        newRecord.year = json.releases[i].basic_information.year
        newRecord.recordlabel = json.releases[i].basic_information.labels[0].name
        
        myrecords.append(newRecord)
    }