2017-08-23 30 views
1

我想用seaborn將點圖和箱線組合成一個地塊。該組合本身起作用,但由於兩個數據幀的x軸值不在相同的範圍內,所以我得到錯誤的輸出(第二個數據幀的x值將被忽略)。 這裏是我的數據集的部分:Python:將兩個不同的地塊組合在一個地塊中,但不同的x值範圍

import pandas as pd 
bpdata=pd.DataFrame({'Ldate': [20150202, 20150202, 20150202, 20151117, 20151117, 20151117, 20160205, 20160205, 20160205], 'Lreflectance': [0.067, 0.0482, 0.0555, 0.099, 0.0956, 0.0931, 0.0757, 0.0663, 0.0566]}) 
Mplotdata=pd.DataFrame({'Mdate':[20150202, 20150407,20160202], 'Mreflectance': [0.0868, 0.0833,0.0719]}) 

Plottet獨立:

import seaborn as sns 
plot=sns.pointplot(data=Mplotdata, x='Mdate', y='Mreflectance', color='dimgrey', marker='o') 
for item in plot.get_xticklabels(): 
    item.set_rotation(45) 

plot=sns.boxplot(data=bpdata, x='Ldate', y='Lreflectance', color='lightgray') 
for item in plot.get_xticklabels(): 
    item.set_rotation(45) 

是這樣的: pointplot (left) and boxplot (right)

但是,當我試圖把兩者pointplot和箱線圖成一個情節

plot=sns.boxplot(data=bpdata, x='Ldate', y='Lreflectance', color='lightgray') 
plot=sns.pointplot(data=Mplotdata, x='Mdate', y='Mreflectance', color='dimgrey', marker='o') 
for item in plot.get_xticklabels(): 
    item.set_rotation(45) 

它看起來像這樣: combined plot

在此圖中,x軸僅顯示第一個圖的值。如果我改變pointplot和boxplot的順序,它也將使用第一個數據幀的x值,第二個將被忽略。

任何想法如何解決這個問題?

我在這個論壇,谷歌或matplotlib/seaborn文檔中還沒有找到任何解決方案。 @JürgMerlinSpaak

+0

你可以包括([編輯])一些最小的數據集,重現問題?請求調試幫助時請查看[mcve]。 – MSeifert

+0

謝謝@MSeifert,完成了。 – kimjanas

+0

目前還不清楚你希望看到哪些值在劇情中。此外,您顯示的圖像似乎不符合數據。請記住,你在這裏交談的人可能是數據分析和Python繪圖專家,但他們不知道你的特殊問題,所以你需要向他們解釋。 – ImportanceOfBeingErnest

回答

0
fig, ax = plt.subplots() 
ax2 = ax.twiny() # put a second plot on top of it, having the same y axis 
data1 = np.random.random(10) #random in [0,1] 
data2 = np.random.random(15)+1 #random in [1,2] 

ax.plot(np.arange(len(data1)), data1) # plot in the first plot 
ax2.plot(np.arange(len(data2)),data2) # plot in the second plot 
0

謝謝,就是這樣:

fig, ax = plt.subplots() 
ax2 = ax.twiny() 
plot=sns.boxplot(data=bpdata, x='Ldate', y='Lreflectance', color='lightgray', ax=ax) 
plot=sns.pointplot(data=Mplotdata, x='Mdate', y='Mreflectance', color='dimgrey', marker='o', ax=ax2) 
for item in plot.get_xticklabels(): 
    item.set_rotation(45) 

enter image description here

情節的大小和箱子仍然需要改進,但是這兩幅圖的組合工作正常。謝謝!

相關問題