実用性は皆無なのですが、他にやっている人を見かけなかったのでやってみました。
前回の記事で紹介した matplotlibのxkcdスタイルの続きです。
ドキュメントを読めば明らかなのですが、 plt.xkcd()には3種類の引数を渡すことができます。
ドキュメント: matplotlib.pyplot.xkcd
3つの引数と意味はそのまま引用します。
scale : float, optional
The amplitude of the wiggle perpendicular to the source line.length : float, optional
The length of the wiggle along the line.randomness : float, optional
The scale factor by which the length is shrunken or expanded.
初期値は (scale=1, length=100, randomness=2) です。
色々試したところ、 scaleと randomness は 増やすと徐々にグラフが崩れていき、
length は減らすと崩れていくようです。
初期値と、それぞれ値を変更した3パターンをグラフ出力してみました。
(randomness はこれだけ変えても変化がわかりにくかったので、scaleも変更しています。)
import matplotlib.pyplot as plt
import numpy as np
# グラフを描く処理は共通化
def graph_plot(ax):
X0 = np.linspace(0, 2*np.pi, 200)
Y_sin = np.sin(X0)+2
Y_cos = np.cos(X0)+2
X1 = np.arange(7)
Y1 = (X1 ** 2)/36
ax.plot(X0, Y_sin, label="$y=\\sin(x)$")
ax.plot(X0, Y_cos, label="$y=\\cos(x)$")
ax.bar(X1, Y1, alpha=0.3, color="g")
ax.legend()
fig = plt.figure(figsize=(12, 10), facecolor="w")
# 間隔調整
fig.subplots_adjust(hspace=0.3, wspace=0.3)
# xkcd オプションの影響を局所化するため with で使う。
with plt.xkcd(scale=1, length=100, randomness=2):
ax = fig.add_subplot(2, 2, 1, title="default")
graph_plot(ax)
with plt.xkcd(scale=2, length=100, randomness=2):
ax = fig.add_subplot(2, 2, 2, title="scale=2")
graph_plot(ax)
with plt.xkcd(scale=1, length=50, randomness=2):
ax = fig.add_subplot(2, 2, 3, title="length = 50")
graph_plot(ax)
with plt.xkcd(scale=2, length=100, randomness=6):
ax = fig.add_subplot(2, 2, 4, title="scale=2, randomness=6")
graph_plot(ax)
plt.show()
出力されるのがこちらです。
結構雰囲気変わりますね。
とはいえ、あまりやりすぎるとくどくなるので、初期設定だけで困ることもなさそうです。
(そもそもこのスタイルが必要になる場面も基本的に無いのですが。)
全くの余談ですが、matplotlibのドキュメントページのULRにxkcdをつけるとドキュメントのスタイルが変わります。
(よくみると内容も変わってっています。)
お暇な時に見比べてみてください。
https://matplotlib.org/
https://matplotlib.org/xkcd/