如何解决使用 python (matplotlib) 复制 Stata psgraph 的输出
在 Stata 中,有一个名为 psgraph 的函数,它是处理组和未处理组的倾向得分的直方图,未处理的条形基本上反映在 x 轴上,以便于比较(如下所示)。我正在尝试使用 matplotlib 在 Python 中制作类似的图形,但不确定如何使轴对齐。
这是我目前所拥有的简化版本。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
random_data=pd.DataFrame(columns=['treated','pscore'])
random_data['treated']=np.random.randint(0,2,size=1000)
random_data['pscore']=np.random.uniform(0,1,size=1000)
fig,ax=plt.subplots()
ax.hist(random_data['pscore'][random_data['treated']==1],bins=50);
ax2=ax.twinx()
ax2.hist(random_data['pscore'][random_data['treated']==0],bins=50,color='orange');
ax2.invert_yaxis()
这是输出:
我正在寻找一种方法,使 y 轴上的零与两个 x 轴对齐,橙色条从那里向下,蓝色条向上(模仿 Stata 的想法)图)。
解决方法
我能够回答我自己的问题!这有效:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_axes_aligner import align
random_data=pd.DataFrame(columns=['treated','pscore'])
random_data['treated']=np.random.randint(0,2,size=1000)
random_data['pscore']=np.random.uniform(0,1,size=1000)
fig,ax=plt.subplots()
ax.hist(random_data['pscore'][random_data['treated']==1],bins=50);
ax2=ax.twinx()
ax2.hist(random_data['pscore'][random_data['treated']==0],bins=50,color='orange');
ax2.invert_yaxis()
org1 = 0.0
org2 = 0.0
pos = 0.5
align.yaxes(ax,org1,ax2,org2,pos)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。