等間隔のグラデーションを作る
import matplotlib.pyplot as plt
# test data
x=[2,3,5,7,11,13,17]
y=[0,0,1,1,2,2,3]
# グラデーションを作る
cm=plt.get_cmap('Blues') # 他にも'jet'など
cm_interval=[ i / (len(x) - 1) for i in range(len(x)) ]
cm=cm(cm_interval)
# plot
ax=plt.figure(figsize=(3, 3)).add_subplot(111)
ax.scatter(x=x, y=y, c=cm)
plt.savefig('prime_num.pdf')
for構文を使うとき: 色は2D-arrayで指定
import matplotlib.pyplot as plt
# test data
x=[2,3,5,7,11,13,17]
y=[0,0,1,1,2,2,3]
# グラデーションを作る
cm=plt.get_cmap('Blues')
cm_interval=[ i / (len(x) - 1) for i in range(len(x)) ]
cm=cm(cm_interval)
# plot
ax=plt.figure(figsize=(3, 3)).add_subplot(111)
for x_val, y_val, col in zip(x, y, cm):
ax.scatter(x=x_val, y=y_val, c=[col]) # 色は2D-arrayで指定
plt.savefig('prime_num.pdf')
数値に応じたグラデーションを作る
import matplotlib.pyplot as plt
# test data
x=[2,3,5,7,11,13,17]
y=[0,0,1,1,2,2,3]
# plot
ax=plt.figure(figsize=(3, 3)).add_subplot(111)
ax.scatter(x=x, y=y, c=y, cmap='Blues') # ここで指定
plt.savefig('prime_num.pdf')
注意点
'Blues'などの白色を含むcmapを使用すると、始めの値が白になるので、見えなくなる。'jet'を用いると問題はない。データの可視化の際には注意。
↓ 'Blues'を用いるときの白色回避方法:
import matplotlib.pyplot as plt
# test data
x=[2,3,5,7,11,13,17]
y=[0,0,1,1,2,2,3]
# グラデーションを作る
cm=plt.get_cmap('Blues')
cm_interval=[ i / (len(x)) for i in range(1, len(x)+1) ] ## ここを変える !!!!!!
cm=cm(cm_interval)
# plot
ax=plt.figure(figsize=(3, 3)).add_subplot(111)
ax.scatter(x=x, y=y, c=cm)
plt.savefig('prime_num.pdf')
環境
Ubuntu 18.04
Python 3.7.3
matplotlib 3.1.0