web-dev-qa-db-ja.com

seaborn / matplotlibボックスプロットを使用するときのティック頻度

私はseabornで一連の箱ひげ図をプロットしています

_sns.boxplot(full_array)
_

ここで、_full_array_には200個の配列が含まれます。したがって、x軸には0から200までの200の箱ひげ図と目盛りがあります。

Xticksは互いに近すぎます。たとえば、ラベルを付けたxtickを20ごとに表示するなど、それらの一部のみを表示したいと思います。

言及したように私はいくつかの解決策を試しました here が機能しませんでした。

Xticksをサンプリングするたびに、0からNまでの番号が付けられており、単位間隔でティックのラベルが間違っています。

たとえば、ax.xaxis.set_major_locator(ticker.MultipleLocator(20))という行では、ラベルが付けられたxtickを20ごとに取得しますが、ラベルは20、40、60、80ではなく1、2、3、4です...

手伝ってくれてありがとうございます。

12
Michele

シーボーンボックスプロットは、FixedLocatorとFixedFormatterを使用します。

print ax.xaxis.get_major_locator()
print ax.xaxis.get_major_formatter()

プリント

<matplotlib.ticker.FixedLocator object at 0x000000001FE0D668>
<matplotlib.ticker.FixedFormatter object at 0x000000001FD67B00>

したがって、ティックの値は固定フォーマッターによって設定されるため、ロケーターをMultipleLocatorに設定するだけでは不十分です。

代わりに、ScalarFormatterを設定することをお勧めします。これにより、目盛りラベルがその位置の数値に対応するように設定されます。

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import seaborn.apionly as sns
import numpy as np

ax = sns.boxplot(data = np.random.Rand(20,30))

ax.xaxis.set_major_locator(ticker.MultipleLocator(5))
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())

plt.show()

enter image description here