Matplotlibで極座標図を勉強したので、 それを使って、ロゴ風の綺麗な散布図を作ってみようと思います。

Matplotlibの極座標図に散布図+グラデーション

Matplotlibの極座標図に散布図をプロットし、その各点をplt.cm.jetという関数を使ってグラデーションをつけると、とっても綺麗な図を作れました◎
import numpy as np import matplotlib.pyplot as plt #plt.plotではpolarは使えないので、plt.subplotで。 ax = plt.subplot(polar="True") #Matplotlibのロゴと同じ18点 n = 250 #プロット点のx座標n個を2pi間に等間隔で用意 #np.deg2radで0[度]から360[度]を[rad]に変換 theta = np.arange(np.deg2rad(0),np.deg2rad(360),2*np.pi/n) x = np.random.rand(n) #プロットする値(barの長さ)を乱数で作成 [-] T = theta/(2*np.pi) #色を360度で変更 #plt.cm.jetが角度(theta値)によって色がグラデーションするテクニック scatters = plt.scatter(theta, x, s=60, alpha=0.6, c=plt.cm.jet(T)) ax.set_ylim(0, 1.01) #円の大きさ(半径)を1.0まで ax.set_xticklabels([]) #x軸(角度)非表示 ax.set_yticklabels([]) #y軸(値)非表示 plt.savefig("logo3.png") plt.show()
これを出力すると、以下の図になります。
logo3
綺麗:D

Matplotlibでscatters=plt.scatterと定義すれば、for文を使わず1行で済む。

thetaとxが配列となっているので、わざわざfor文でplt.scatterとしなくとも、
A=plt.scatter(theta,x)としてしまえば、1行の記述で済むので、すっきりしますね。

sはsize、cはcolor、alphaは透明度。


この図はInstagramに投稿しようと思います:)