Matplotlib は Python で最も広く使われているデータ可視化ライブラリの 1 つです。
Matplotlib の人気の多くは、そのカスタマイズオプションによるもので、オブジェクトの階層構造からほとんどすべての要素を微調整することができます。
このチュートリアルでは、Matplotlib のプロットの軸をオフにする方法について見ていきます。
つまり、目盛りラベル、グリッド、目盛り、個々の棘などの個々の要素をオフにする方法と、それらをまとめて軸と呼ぶグループとしてオフにする方法です。
これから説明するアプローチのほとんどは、2Dと3Dのプロットで同じように動作します。
通常の Axes
クラスと Axes3D
クラスは、同じメソッドを持っています。
3Dプロットには2つ以上の突起があるため、同じようにはいかないものもあります。
注:このガイドの残りの部分では、3Dプロットを使用します。
これは、棘や目盛りを消して – 同じデータセットの2Dプロットと同様に、データがそれ自身を語るようにしたいような、より一般的なケースです。
1967年にジョセリン・ベル・バーネルが発見し、1970年にハロルド・D・クラフト・ジュニアが博士論文で視覚化し、1979年にピーター・サヴィルが普及させたCP1919パルサーのデータを再現してみます。
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
df = pd.read_csv(r"https://raw.githubusercontent.com/StackAbuse/CP1919/master/data-raw/clean.csv")
groups = df.groupby(['line'])
plt.style.use('dark_background')
fig = plt.figure(figsize=(6, 8))
ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('Line Number')
ax.set_ylabel('Time')
ax.set_zlabel('Intensity')
for group in groups:
line = ax.plot(group[1]['line'], group[1]['x'], group[1]['y'], color='white')
plt.show()
という結果になる。
リッジプロット(上図)についてもっと知りたい、Matplotlibの基礎を固めたい、ライブラリの高度な使い方を知りたいという方は、Pythonでデータ可視化 eBoook Bundleをぜひチェックしてみてください。
この特定の可視化は、このデータセットとプロットの歴史に特化した長いセクションから、そのまま引用しています。
このデータセットとプロットの歴史に特化した長いセクションから抜粋しています。
では、棘、目盛りラベル、目盛、グリッド、軸ラベルを削除する方法を見てみましょう。
軸をオフにするには ax.axis(‘off’) を使用します。
軸に関するすべての機能をオフにする最も簡単な方法は、Axes
または Axes3D
インスタンスの axis('off')
という便利な関数を使用する方法です。
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Load dataset in and set style...
fig = plt.figure(figsize=(6, 8))
ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('Line Number')
ax.set_ylabel('Time')
ax.set_zlabel('Intensity')
ax.axis('off')
for group in groups:
line = ax.plot(group[1]['line'], group[1]['x'], group[1]['y'], color='white')
plt.show()
ノート: MATLABスタイルのAPIを使用してプロットする場合には、 plt
インスタンス上で axis('off')
という関数を使用することもできます。
しかし、現在のようにOOP APIを使用してプロットする場合には、この方法は推奨されません。
このコードの変更により、スパイン、軸線、目盛、目盛ラベル、軸ラベル、グリッドがないプロットになります。
axis()` 関数は、さまざまなプロパティにアクセスするための便利な関数です。
Axis を ax.set_axis_off() でオフにする。
また、ax.set_axis_off()
関数をax.set_axis_on()
関数と併用することで、前者の効果を反転させることも可能です。
これはプロットをアニメーション化するときなど、プロットを更新するときに使用する非常に便利な関数のセットで、軸を無効にするだけでなく、オフにしたりオンにしたりすることができます。
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Load dataset in and set style...
fig = plt.figure(figsize=(6, 8))
ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('Line Number')
ax.set_ylabel('Time')
ax.set_zlabel('Intensity')
ax.set_axis_off()
for group in groups:
line = ax.plot(group[1]['line'], group[1]['x'], group[1]['y'], color='white')
plt.show()
この結果は全く同じプロットになります。
Ίταμμα
軸の目盛りと目盛りラベルをオフにする
これらの要素をすべてオフにして見えなくする代わりに、いくつかを残しておきたい場合は個別にオフにすることもできます。
3DプロットはX軸とY軸だけではありませんから、これらの機能のいくつかは3Dプロットでは動作しないため、ここで2Dプロットに戻ります。
例えば、個々の軸 (目盛りと目盛りラベル) をオフにすることができます。
get_yaxis()や
get_xaxis()を使ってそれぞれの軸を取得し、
set_visible(False)` を使ってそれらをオフにすることができます。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(r"https://raw.githubusercontent.com/StackAbuse/CP1919/master/data-raw/clean.csv")
groups = df.groupby(['line'])
plt.style.use('dark_background')
fig = plt.figure(figsize=(6, 8))
ax = fig.add_subplot(111)
ax.set_xlabel('Time')
ax.set_ylabel('Intensity')
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
for group in groups:
line = ax.plot(group[1]['x'], group[1]['y'], color='white')
plt.show()
これは目盛りラベルと目盛りそのものを消しますが、フレーム(棘)はつけたままにします。
軸の個々のスパインをオフにする。
スパインをオフにするには、ax.spines
ディクショナリを使用してアクセスします。
top,
bottom,
left,
rightのキーを使って、それぞれを選択し、
set_visible()` 関数を使用してオフにすることができます。
それでは、上と右の背表紙をオフにしてみましょう。
import pandas as pd
import matplotlib.pyplot as plt
# Load data and stylize
fig = plt.figure(figsize=(6, 8))
ax = fig.add_subplot(111)
ax.set_xlabel('Time')
ax.set_ylabel('Intensity')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# To turn off the bottom or left
#ax.spines['bottom'].set_visible(False)
#ax.spines['left'].set_visible(False)
for group in groups:
line = ax.plot(group[1]['x'], group[1]['y'], color='white')
plt.show()
これは上と右の背表紙を消しますが、下と左の背表紙はそのまま残し、目盛りとそのラベルもそのまま残します。
また、これらを繰り返し、すべてオフにすることもできます。
for key, spine in ax.spines.items():
spine.set_visible(False)
結論
このチュートリアルでは、軸をオフにするいくつかの方法と、Matplotlib の個々の軸のコンポジットについて説明しました。
もしあなたがデータ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonでのデータ可視化に関する書籍の束をチェックしてみてください。
Pythonによるデータ可視化
データビジュアライゼーションで危険な存在になる
30日間無条件返金保証
初級から上級まで
定期的に無料で更新(最新更新は2021年4月)
ボーナスリソースやガイドを更新
Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使って、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリで高度な作業をするための強力な基盤を構築できるように設計された書籍です。
本書は、Pythonの基本的な知識を持つ方を対象としています。
PandasとMatplotlibについて知っておく必要があることすべてを教えてくれる、詳細なガイドです。
Pythonによるデータ可視化」は、Pythonの初級~中級開発者向けの書籍で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornなどのコアなプロットライブラリを取り上げ、Altairなどの宣言型ライブラリや実験的ライブラリを活用する方法について案内しています。
具体的には、11章にわたって、9つのPythonライブラリを取り上げています。
Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。
データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。