1

我正在尝试这样创建一个箭头图:

http://peltiertech.com/WordPress/arrow-charts-in-excel/

我知道如何创建堆积条形图等等,但我被困在箭头方面。

有谁知道如何将箭头(或三角形)切换为条形?我还考虑过使用烛台图 - 但我不知道如何使用箭头(或三角形)。

如果变化分别为正/负,我试图通过使用向上和向下箭头(或向上和向下三角形)来显示变化。

任何建议表示赞赏。谢谢!

4

2 回答 2

1

我会通过绘制箭头来做到这一点,可能还有条形图,具体取决于所需的效果。例如,假设我有一些变量的数据y,以及它的变化,dy作为元组(y,dy)。可if/else用于选择颜色。然后我为每一对y, dyin画一个箭头data

data=[(.5,.5),(.8,.4),(.2,-.1)]
clrs=['green','red']
for i in range(len(data)):
    y,dy=data[i]
    if dy>0:
        c=clrs[0]
    else:
        c=clrs[1]
    arrow(i,y,0,dy,color=c,length_includes_head=True,lw=2,width=.002)

xlim(-.5,2.5)
ylim(0,2)
grid()

我添加了网格,这样您就可以看到在length_includes_head参数设置为 true 的情况下,箭头的尖端在y+dy. 玩弄线宽和宽度以获得所需的效果。

于 2014-07-11T21:08:11.873 回答
0

这里稍微修改一下python代码,这样我们就可以制作一个简单的带注释的箭头图了。希望它是有帮助的。

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10,6))
data=[('A',.5,.5),('B',.8,.4),('C',.2,-.1)]
clrs=['green','red']
for i in range(len(data)):
    txt,y,dy=data[i]
    if dy>0:
        c=clrs[0]
    else:
        c=clrs[1]
    ax.arrow(i,y,0,dy,color=c,length_includes_head=False,lw=2,head_width=0.05, 
head_length=0.05, width=0.01, fc=c,ec=c)
    ax.annotate(txt, xy=(i, y-dy/6),fontsize=18, 
horizontalalignment='center',verticalalignment= 'center')
plt.xlim(-.5,2.5)
plt.ylim(0,2)
plt.grid()

箭头图示例

于 2021-10-06T18:57:56.997 回答