前提・実現したいこと
matplotlibを使ってグラフを書いていますが、plotを実行する順によってイメージが大きく変わってしまい困っています。下の図のようにplotを2回呼び出した場合あとで呼び出したもののほうが強く表示されるためデータが偏って見えてしまいます。何か対策はあるでしょうか?
該当のソースコード
python
1import matplotlib.pyplot as plt 2plt.style.use('ggplot') 3A=np.random.random((100,2)) 4# 順番1 5plt.figure() 6plt.scatter(A[:50,0],A[:50,1],alpha=0.5) 7plt.scatter(A[:,0],A[:,1],alpha=0.5) 8plt.show() 9 10# 順番2(反転) 11plt.figure() 12plt.scatter(A[:,0],A[:,1],alpha=0.5) 13plt.scatter(A[:50,0],A[:50,1],alpha=0.5) 14plt.show()
[画像が分かりづらかったので削除(下に修正後の画像を追加)]
試したこと
[追記]
自分で試したところ、プロットする点を小さくすれば良いとわかったので、修正後のコードを載せておきます
python
1import matplotlib.pyplot as plt 2import random 3plt.style.use('ggplot') 4sample_size=1000 5A=np.random.random((sample_size,2)) 6B=np.random.random((sample_size,2)) 7# 順番1 8plt.figure(figsize=(2,2)) 9plt.scatter(A[:,0],A[:,1],alpha=0.5,c='red') 10plt.scatter(B[:,0],B[:,1],alpha=0.5,c='blue') 11plt.title('fig.1') 12plt.show() 13 14# 順番2(反転) 15plt.figure(figsize=(2,2)) 16plt.scatter(A[:,0],A[:,1],alpha=0.5,c='blue') 17plt.scatter(B[:,0],B[:,1],alpha=0.5,c='red') 18plt.title('fig.2') 19plt.show() 20 21# 対策1 22# サンプル数を減らす 23# めんどくさい 24plt.figure(figsize=(2,2)) 25 26for i in range(2): 27 indices=random.sample(range(sample_size),int(sample_size/10)) 28A_part=A[indices] 29B_part=B[indices] 30plt.scatter(A_part[:,0],A_part[:,1],alpha=0.5,c='red') 31plt.scatter(B_part[:,0],B_part[:,1],alpha=0.5,c='blue') 32plt.title('fig.3') 33plt.show() 34 35# 対策2交互にプロットする 36# 時間がかかりすぎる 37plt.figure(figsize=(2,2)) 38for i in range(sample_size): 39#for i in range(int(sample_size/100)): 40 plt.scatter(A[i,0],A[i,1],alpha=0.5,c='blue') 41 plt.scatter(B[i,0],B[i,1],alpha=0.5,c='red') 42plt.title('fig.4') 43plt.show() 44 45# 対策3 図を大きくする、点を小さくする 46plt.figure(figsize=(4,4)) 47plt.scatter(A[:,0],A[:,1],alpha=0.5,c='blue',s=5) 48plt.scatter(B[:,0],B[:,1],alpha=0.5,c='red',s=5) 49plt.title('fig.5') 50plt.show()
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。