我将特定点的温度数据栅格化到列表中,并将其绘制在条形图上,如下所示:
不可避免地,来自此网格化数据集的温度将降至0度以下,我正在尝试缩放Y轴,以使具有正值和负值的条形的混合都将朝图像顶部上升。
我已经研究了here中发现的示例代码,但是据我所知,该代码假定数组中的所有值均为负,而我正在使用的数据集将没有此值。
为生成下面显示的图形而组装的代码(不包括初始列表的构建)如下:
objects = (''+ mon0 +' '+ date0 +'', ''+ mon1 +' '+ date1 +'', ''+ mon2 +' '+ date2 +'', ''+ mon3 +' '+ date3 +'', ''+ mon4 +' '+ date4 +'', ''+ mon5 +' '+ date5 +'', ''+ mon6 +' '+ date6 +'', ''+ mon7 +' '+ date7 +'', ''+ mon8 +' '+ date8 +'', ''+ mon9 +' '+ date9 +'', ''+ mon10 +' '+ date10 +'')
y_pos = np.arange(len(objects))
fig, ax = plt.subplots(figsize=(14,8))
bar_width = 0.40
rects = plt.bar(y_pos, btv_list, bar_width, color='#cc0000', edgecolor='black')
plt.xticks(y_pos, objects)
plt.ylabel('Temperature (°F)')
plt.xticks(y_pos, objects)
for rect in rects:
y_value = rect.get_height()
x_value = rect.get_x() + rect.get_width() / 2
space = 3
va = 'bottom'
label = y_value
plttxt = plt.annotate(label, (x_value, y_value), xytext=(0, space), textcoords="offset points", ha='center', va=va)
plttxt.set_fontsize(14)
plttxt.set_weight('semibold')
fig.tight_layout()
答案 0 :(得分:2)
这是您想要得到的吗?
h = np.random.normal(size=(10,))
min_val = min(h)
plt.figure()
rects = plt.bar(x=range(10),height=h-min_val, bottom=min_val)
plt.axhline(0.,ls='--', lw=1, color='grey', zorder=-1)
for rect in rects:
y_value = rect.get_height()+min_val
x_value = rect.get_x() + rect.get_width() / 2
space = 3
va = 'bottom'
label = '{:.2f}'.format(y_value)
plttxt = plt.annotate(label, (x_value, y_value), xytext=(0, space), textcoords="offset points", ha='center', va=va)
plttxt.set_fontsize(8)
plttxt.set_weight('semibold')