在matplotlib中对pandas数据框进行条件绘图。

问题描述 投票:0回答:1

我有一个如下的多面板图。

fig, axs = plt.subplots(1, 2, sharey=True, figsize = (20 , 10) , gridspec_kw={'hspace': 0, 'wspace': 0})

axs[0].scatter(fullmergedf['gf_re_j'] , fullmergedf['PAB_SFR_EX2'] , s = 200)
axs[0].scatter(fullmergedf['gf_re_j'] , fullmergedf['PAB_SFR_EX2_LL'] , s = 200 , marker = '+' , c = 'black')
axs[0].plot([0 , 2] , [0 , 0] , '--' , c = 'gray')
axs[0].set_ylabel(r'log($SFR_{Pa\beta}$) - log($SFR_{UV}^{corr}$)')
axs[0].set_xlabel(r"$R_{eff}$ [arcsec]")
axs[0].axis([0 , 1.7 , -2.5 , 3])

axs[1].scatter(fullmergedf['gf_n_j'] , fullmergedf['PAB_SFR_EX2'] , s = 200)
axs[1].scatter(fullmergedf['gf_n_j'] , fullmergedf['PAB_SFR_EX2_LL'] , s = 200 , marker = '+' , c = 'black')
axs[1].plot([0 , 8] , [0 , 0] , '--' , c = 'gray')
axs[1].set_xlabel(r"n")
axs[1].axis([0 , 3 , -2.5 , 3])
#axs[1].set_xscale('log')

plt.show()

我想用数据框架中另一列的条件 来删除散点图中的一些点。这个条件需要是,只有在 fullmergedf['gf_f_j'] 对该对象来说是0。在pandas中有没有一种有效的方法来做这样的事情?

python pandas matplotlib astronomy
1个回答
1
投票

你可以做一个布尔分片吗?所以也许 x = fullmergedf['gf_re_j'][fullmergedf['gf_re_j'] == 0]y = fullmergedf['PAB_SFR_EX2'][fullmergedf['gf_re_j'] == 0]那么 ax.scatter(x,y) (只是为了便于阅读而分解成变量)。

© www.soinside.com 2019 - 2024. All rights reserved.