2017-12-07 18 views
0

StatsModels과 함께 누적 확률 플롯을 작성했지만 축에 너무 많은 눈금이 있습니다. Too many xticksStatsmodel Probplot Tick 사용자 정의

0.1, 10, 50, 90, 99 및 99.9에만 눈금이 표시되기를 원합니다. 누구나이 작업을 수행하는 방법을 알고 있습니까? 나는 아래의 코드를 사용하여 시도했지만 그것은 단지 꽤 쓸모 만들기, 나에게 틱의 처음 n 수를 제공합니다 (아래 그림 참조).

Too few ticks

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 
import matplotlib.ticker as ticker 
import statsmodels.api as sm 

csv = pd.read_csv('cumProbMaxData.csv') 
data = csv.values.tolist() 

flat_list = [item for sublist in data for item in sublist] 
fig,ax = plt.subplots() 

x = np.array(flat_list) 
pp_x = sm.ProbPlot(x, fit=True) 
figure = pp_x.probplot(exceed=False, ax=ax, marker='.', color='k', markersize=12) 

plt.xlabel('Cumulative Probability (%)') 
plt.ylabel('Maximum CO$_2$ Flux (g m$^-$$^2$ d$^-$$^1$)') 
tick_spacing=5 
ax.xaxis.set_major_locator(ticker.MaxNLocator(tick_spacing)) 

plt.tight_layout() 
plt.show() 
+0

당신은'plt.xticks'을 사용하여 사용해 볼 수 있습니까? [here] (https://matplotlib.org/api/_as_gen/matplotlib.pyplot.xticks.html?highlight=matplotlib%20pyplot%20xticks#matplotlib.pyplot.xticks)의 몇 가지 예를 찾을 수 있습니다. –

답변

1

Statsmodels ProbPlot 플롯 그들의 진짜 단위의 데이터입니다. 약간의 백분율 값을 나타내도록 축 눈금 만 변경됩니다. 이것은 일반적으로 나쁜 스타일이지만 물론 ProbPlot을 사용하려면 함께 생활해야합니다.

FixedLocatorFixedFormatter을 사용하는 플롯에서 눈금이 적게 나타나는 문제에 대한 해결책은 표시된 틱을 서브 샘플링하는 것입니다. 보여주고 자하는 틱 레이블은 인덱스 locs = [0,3,6,10,14,17,20] (틱 레이블 0, 3, 6 등을 표시하고자 함)에 있습니다. 이 목록을 사용하여 표시된 틱 중에서 아래 표시된 것처럼 목록의 틱만 선택할 수 있습니다.

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 
import statsmodels.api as sm 

x = np.random.randn(200) 

fig,ax = plt.subplots() 

pp_x = sm.ProbPlot(x, fit=True) 
pp_x.probplot(exceed=False, ax=ax, marker='.', color='k', markersize=12) 

locs = [0,3,6,10,14,17,20] 
ax.set_xticklabels(np.array(ax.xaxis.get_major_formatter().seq)[locs]) 
ax.set_xticks(ax.get_xticks()[locs]) 

plt.tight_layout() 
plt.show() 

enter image description here

+0

이것은 정말 감사합니다. – beto5243