1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

matplotlibのstyleはどれが良いか

Last updated at Posted at 2024-01-28

初めに

以前の投稿に引き続き,グラフに少しだけ凝ってみる.

matplotlibでグラフを描画するときは,

import matplotlib.pyplot as plt
plt.style.use(STYLE)   # STYLE: str

を宣言することで,描画スタイルを選択できる.

公式のdocumentationに幾つかの例が示されているが,興味のあるスタイルのみ取り出して比較する.

比較

以前の投稿より,グラフのアスペクト比は大和比(7 : 5)で描画する.

2Dと3Dの図を作り,様子を確認する.

style 2D 3D
default default_2d.png default_3d.png
fast fast_2d.png fast_3d.png
seaborn-white seaborn-white_2d.png seaborn-white_3d.png
_mpl-gallery _mpl-gallery_2d.png _mpl-gallery_3d.png
bmh bmh_2d.png bmh_3d.png
classic classic_2d.png classic_3d.png
dark_background dark_background_2d.png dark_background_3d.png
ggplot ggplot_2d.png ggplot_3d.png
tableau-colorblind10 tableau-colorblind10_2d.png tableau-colorblind10_3d.png
seaborn-colorblind seaborn-colorblind_2d.png seaborn-colorblind_3d.png
seaborn seaborn_2d.png seaborn_3d.png
seaborn-deep seaborn-deep_2d.png seaborn-deep_3d.png
seaborn-muted seaborn-muted_2d.png seaborn-muted_3d.png
seaborn-poster seaborn-poster_2d.png seaborn-poster_3d.png
seaborn-talk seaborn-talk_2d.png seaborn-talk_3d.png
seaborn-notebook seaborn-notebook_2d.png seaborn-notebook_3d.png
seaborn-paper seaborn-paper_2d.png seaborn-paper_3d.png

defaultfastは殆ど違いが無いように見える.seaborn-whiteも似ているが,枠線の太さ,tickの有無,legendのボックスの塗り潰しの有無などが違う.

個人的にbmhは好きだったが,3Dで背景に影が入るのが面倒(なぜかは良く分かっていない).他にも,3Dで背景に色が付くもの(ggplotなど)は避けたい.

色覚異常を持つ方にもフレンドリーなスタイルに,tableau-colorblind10seaborn-colorblindがある.幸い色覚異常の無い私には,seaborn-colorblindのカラーサイクルの方が好みだ.

seabornも背景に色が付くので避けたいが,背景が白色でカラーサイクルがseabornに近いものとして,seaborn-deepseaborn-mutedがある.seaborn-mutedの方がパステルっぽいというか,明るさがある.seaborn-deepが名前通り深みのある色であり,個人的にはこちらが好きだ.

seaborn系の中で,幾つかdefaultに似たカラーサイクルを持っているものがあり,候補として良い.文字の大きさが変更されるようで,

  • poster > talk > notebook > paper

という順で文字やマーカーが大きく,線が太い.defaultnotebookが同じくらいの文字・マーカーサイズ,線の太さだが,seaborn系の方がlegendのボックスの線が細い.

終わりに

これが良いという結論は出し辛いので,これで終える.

Appendix

2Dの図は以前の投稿と同様に作成した.

3Dの図はMatplotlibの3D plottingを基に作成した.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as mtri

plt.rcParams['figure.figsize'] = (7, 5)
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['mathtext.fontset'] = 'cm'

fig = plt.figure()

# Make a mesh in the space of parameterisation variables u and v
u = np.linspace(0., 2. * np.pi, endpoint=True, num=50)
v = np.linspace(-.5, .5, endpoint=True, num=10)
u, v = np.meshgrid(u, v)
u, v = u.flatten(), v.flatten()

# This is the Mobius mapping, 
# taking a u, v pair and returning an x, y, z triple
x = (1 + 0.5 * v * np.cos(u / 2.0)) * np.cos(u)
y = (1 + 0.5 * v * np.cos(u / 2.0)) * np.sin(u)
z = 0.5 * v * np.sin(u / 2.0)

# Triangulate parameter space to determine the triangles
tri = mtri.Triangulation(u, v)

# Plot the surface. 
# The triangles in parameter space determine which x, y, z points are connected by an edge.
ax = fig.add_subplot(projection='3d')
C = ax.plot_trisurf(x, y, z, triangles=tri.triangles, cmap="Spectral_r")
fig.colorbar(C, ax=ax, shrink=.6, pad=.1, orientation='vertical', extend='both')

ax.set(
    zlim=(-.5, .5),
    xlabel=r'$x$', 
    ylabel=r'$y$', 
    zlabel=r'$z$'
)

fig.tight_layout()
plt.show()
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?