箭头图 - 将柱状图更改为形状
我想制作一个箭头图,像这样:
http://peltiertech.com/WordPress/arrow-charts-in-excel/
我知道怎么制作堆叠条形图,但在箭头的部分遇到了困难。
有没有人知道怎么把箭头(或者三角形)放进条形图里?我也考虑过用蜡烛图,但不知道怎么用箭头(或者三角形)。
我想通过向上和向下的箭头(或者三角形)来显示变化,如果变化是正的就用向上的箭头,负的就用向下的箭头。
任何建议都很感谢。谢谢!
2 个回答
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()
1
我会通过画箭头来实现这个效果,可能还会配合柱状图,具体看你想要的效果是什么。比如,假设我有一些数据,表示某个变量 y
及其变化量 dy
,这些数据可以用一对对的形式表示,像这样 (y,dy)
。然后可以用 if/else
来选择颜色。接着,我会为每一对 y
和 dy
在 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
的位置。你可以调整线条的宽度和箭头的宽度,来达到你想要的效果。