在Python中,如何在xaxis上的两个指定点之间创建单个水平条?

2024-05-16 18:36:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我对一组步态数据进行了一些SPM分析,结果显示在不同的站姿区域之间存在显著差异

我想创建一个单数水平条,它在标识重要性的区域之间着色,类似于this纸中的单数水平条-这是两个x轴位置之间的黑色块条(表示出现显著差异的站姿百分比)

我已经成功地通过以下代码生成了一个接近我所追求的东西,例如,在20%到100%的站姿之间出现了显著差异:

y = 'SPM{t}'
x = [0,100]
plt.figure(figsize = (6,1))
plt.axvline(x=20.466, color='black',linewidth='2', linestyle='-')
plt.axvline(x=100, color='black',linewidth='2', linestyle='-')
plt.xlabel('Stance (%)', size = (12))
plt.barh(y,x, color ='white')  

Code output

这为我提供了两行之间的区域,作为我想要显示的区域,但是我希望这个区域用黑色填充。y轴是任意的,因为它没有数值。实际上,我想让图形显示x轴上的开和关周期,黑色条表示“开”(sig diff),空格表示“关”(无sig diff)

我很欣赏可能有一个非常简单的解决方案,但是我对Python还不熟悉

任何帮助/指导都会很好

OC


Tags: 区域水平diffplt差异colorblacksig
1条回答
网友
1楼 · 发布于 2024-05-16 18:36:46

一种方法是用left绘制另一个条形图:

y = 'SPM{t}'
x = [0,100]
x1,x2 = 20.466, 100
plt.figure(figsize = (6,1))
plt.xlabel('Stance (%)', size = (12))
plt.barh(y,x, color ='white')  

# this 
plt.barh(y,width=x2-x1, left=x1, color='k')

输出,不完美,但视觉上可接受(我):

enter image description here

相关问题 更多 >