-1
matplotlib를 사용하여 상당히 일반적인 그래프를 작성하려고하지만 오류가 계속 발생합니다 (ValueError: left cannot be >= right
). 내 코드는 다음과 같습니다.Python Matplotlib : Twinx를 사용한 일반용 그래프()
def perf_plot(x, y, data, title = ''):
import matplotlib.pyplot as plt
import statsmodels.api as sm
plt.style.use('ggplot')
df = data
if y == 'slope':
z = 'bp01'
else:
z = 'slope'
y = df[y].astype(float)
x = df[x].astype(float)
z = df[z].astype(float)
blue = '#348EA9'
orange = '#F48B37'
green = '#52BA9B'
red = '#EF4846'
fig, ax1 = plt.subplots()
fig.suptitle(title, fontsize=14, fontweight='bold')
fig.subplots_adjust(top=0.85)
ax1.scatter(x ,y, color = orange)
lowess_y = sm.nonparametric.lowess(y, x ,frac=0.1)
ax1.plot(lowess_y[:, 0], lowess_y[:, 1], color = blue)
ax1.set_ylabel(y, color = blue)
ax1.set_xlabel(x, color = 'b')
ax2 = ax1.twinx()
lowess_z = sm.nonparametric.lowess(z, x, frac=0.1)
ax2.plot(lowess_z[:, 0], lowess_z[:, 1], color = green)
ax2.set_ylabel(z, color = green)
fig.tight_layout()
plt.show()
return
Google 검색 후,이 오류는 일반적으로 tight_layout() 및 제목 사용과 관련이있는 것으로 나타났습니다. 제목을 제거해도 문제가 해결되지는 않지만 tight_layout을 제거하면 그래프가 인쇄되지만 그래프의 왼쪽에 두 축이 모두 배치됩니다. 요점은 this 같은 것을하는 것이므로, 나는 tight_layout없이 결투 축을 얻는 방법이 아닙니다. 아이디어?
오류 코드 :
perf_plot(x_, y_, df1)
Traceback (most recent call last):
File "<ipython-input-149-36ff57804093>", line 1, in <module>
perf_plot(x_, y_, df1)
File "<ipython-input-148-ef2f325b64f9>", line 37, in perf_plot
fig.tight_layout()
File "C:\Users\user\AppData\Local\Continuum\Anaconda2\lib\site-packages\matplotlib\figure.py", line 1755, in tight_layout
self.subplots_adjust(**kwargs)
File "C:\Users\user\AppData\Local\Continuum\Anaconda2\lib\site-packages\matplotlib\figure.py", line 1620, in subplots_adjust
self.subplotpars.update(*args, **kwargs)
File "C:\Users\user\AppData\Local\Continuum\Anaconda2\lib\site-packages\matplotlib\figure.py", line 228, in update
raise ValueError('left cannot be >= right')
ValueError: left cannot be >= right
문제의 [mcve]는 어떻게됩니까? 현재 아무도 코드를 실행할 수 없습니다. 또한 사용중인 라이브러리의 버전을 명시하십시오. – ImportanceOfBeingErnest
라이브러리가 최신 버전입니다. 어느 누구도 코드를 실행할 수 없습니까? 그것의 아주 완전. – WolVes
코드를 복사하여 실행하려고하면 함수가 어디에서도 호출되지 않고 어떤 데이터를 넣어야하는지 명확하지 않기 때문에 작동하지 않습니다. – ImportanceOfBeingErnest