2017-12-07 23 views
0

私はPythonで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'を使用してみてくださいことはできますか? [ここ](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.xticks.html?highlight=matplotlib%20pyplot%20xticks#matplotlib.pyplot.xticks)の例があります。 –

答えて

1

Statsmodels彼らの本当の単位でProbPlotプロットデータを。軸の目盛りだけが変更され、パーセント値が表示されます。これは一般的には悪いスタイルですが、もちろんProbPlotを使用したい場合は、それと一緒に生活しなければなりません。

FixedLocatorおよびFixedFormatterを使用するこのようなプロットで目立たないダニを示す問題の解決策は、示されたダニをサブサンプルすることです。表示するティックラベルは、インデックス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

関連する問題