我有 5 个列表,您可以在下面看到
always_failing_list_tt = [0.221,0.221,0.221, 0.221]
always_passing_list_tt = [0.335,0.335,0.335, 0.335]
all_test_tt = [108.281]
keep_list_tt = [93.104,85.011,76.111,70.932]
eppm_plot = [0,35482,70517,101074]
我想创建一个堆积条形图,使得第二条情节我相比all_test_tt
是的组合(always_passing_list_tt
+ always_failing_list_tt
+ keep_list_tt
)
我使用下面的代码来做到这一点:
from matplotlib.ticker import ScalarFormatter
x = np.arange(len(eppm_plot))
width = 0.35 # the width of the bars
fig, ax1 = plt.subplots(figsize = (25,5))
rects1 = ax1.bar(x - width/2, all_test_tt, width, label='full_block_coverage_tt', color = 'y')
rects4 = ax1.bar(x+ width/2, keep_list_tt, width,bottom =list(np.add(always_failing_list_tt,always_passing_list_tt)) ,label = 'lean_coverage_tt', color='#fbb4ae', edgecolor='#fbb4ae')
rects2 = ax1.bar(x+ width/2, always_failing_list_tt ,width,label = 'always_failing_list', color='#b3cde3', edgecolor='#b3cde3')
rects3 = ax1.bar(x + width/2, always_passing_list_tt,width,bottom = always_failing_list_tt, label = 'always_passing_list',color='#ccebc5', edgecolor='#ccebc5')
ax1.set_ylabel('Test time in seconds')
ax1.set_xlabel('EPPM in e6')
ax1.set_title('Full, Lean coverage TT vs EPPM for ATPG,FUNC and MBIST blocks combined')
ax1.set_xticks(x)
ax1.set_xticklabels(eppm_plot)
ax1.legend()
ax1.bar_label(rects1)
ax1.bar_label(rects4)
ax1.bar_label(rects2, padding =-3)
ax1.bar_label(rects3, padding = 12)
ax1.set_yscale("log")
fig.tight_layout()
plt.show()
不使用对数刻度绘图
用对数标度绘图
正如您所看到的always_failing_list_tt
,即使报告了时间,即使在对数刻度中也没有显示。有人能告诉我这是什么问题吗?非常感谢您的帮助
你的代码工作正常。在这两种情况下,条形都被正确绘制,但是它们相对于其他条形来说太小,或者它们在绘图区域之外。
没有对数刻度
放大图的底部ax1.set_ylim(0, 1)
::
如果不缩放,您将无法看到它,因为与其他条形相比,它们太小了。
带对数刻度
放大图的底部ax1.set_ylim(1e-1, 1.5e2)
::
如果不缩放,您将无法看到它,因为 y 轴的自动调整大小会将底部的蓝色条从图中切掉。
使用对数刻度要小心:你的条形从 开始0
,这意味着在对数刻度中它们从 开始变长-∞
。因此,在对数刻度没有一个定义的值从开始的情节:你可以任意选择从开始1e-1
,1e-2
,1e-3
等等。无论您选择什么值,都会影响绘图方面和条形高度的相对比例:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句