2016-11-28 4 views
0

matplotlib에서 별도의 y 축을 사용하여 막대에 상자 그림을 오버레이하려고합니다. 어디서나 예제를 찾을 수없고 ax.set_zorder() 및 ax2.set_alpha()로 생각할 수있는 모든 것을 시도했습니다. 상자 그림에서 배경을 불투명하게 설정할 수 있습니까? ax.patch.set_facecolor('None')막대의 오버레이 상자 그림 matplotlib/python

가 여기에 내가 무엇을 시도했다입니다 ... 완전히 배경을 제거합니다

import matplotlib.pyplot as plt 
import numpy as np 

example_data = [1,2,1],[1,2,2,2],[3,2,1] 

data = [i for i in example_data] 

data_len = [len(i) for i in example_data] 

labels = ['one','two','three'] 

plt.figure() 

fig, ax = plt.subplots() 

plt.boxplot(data) 

ax.set_xticklabels(labels,rotation='vertical') 


ax2 = ax.twinx() 

ax2.bar(ax.get_xticks(),data_len,color='yellow', align='center') 

ax2.set_zorder(1) 

ax.set_zorder(2) 

ax2.set_alpha(0.1) 

ax.patch.set_facecolor('None') 

plt.show() 

감사를 사전에 도움을.

답변

1

바 플롯 후에 상자 플롯이 표시되도록 플롯의 순서를 변경하는 것은 어떻습니까? 예를 들어 :

import matplotlib.pyplot as plt 
import numpy as np 

example_data = [[1,2,1], [1,2,2,2], [3,2,1]] 
data_len = [len(i) for i in example_data] 
labels = ['one','two','three'] 

fig, ax = plt.subplots() 
ax.bar(range(1, len(data_len)+1), data_len, color='yellow', align='center') 
ax2 = ax.twinx() 
ax2.boxplot(example_data) 
ax2.set_ylim(ax.get_ylim()) 
ax.set_xticklabels(labels, rotation='vertical') 
plt.show() 

이 당신을 줄 것이다 :

bar and box plot

+0

니스! 고마워, 그 생각을해야합니다. –