Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制Stata和x27的输出;使用python的psgraph(matplotlib)_Python_Matplotlib - Fatal编程技术网

复制Stata和x27的输出;使用python的psgraph(matplotlib)

复制Stata和x27的输出;使用python的psgraph(matplotlib),python,matplotlib,Python,Matplotlib,在Stata中,有一个称为psgraph的函数,它是治疗组和未治疗组倾向得分的直方图,未治疗的条形图基本上反映在x轴上,以便于比较(如下所示)。我试图使用matplotlib在Python中绘制类似的图形,但不确定如何使轴对齐 这是我到目前为止所做的一个简化版本 import pandas as pd import numpy as np import matplotlib.pyplot as plt random_data=pd.DataFrame(columns=['treated','p

在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轴对齐,并使橙色条从那里向下,蓝色条向上(以模拟理想状态图)。

我能够回答我自己的问题!这项工作:

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)