質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

Q&A

解決済

1回答

6561閲覧

matplotlibで複数のグラフを重ねて表示させる場合に実行順序による違いをなくしたい(データの偏りがあるならば見えるようにし、ないならばないようにしたい)

kimtakuya_

総合スコア22

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

1グッド

0クリップ

投稿2020/03/14 07:26

編集2020/03/16 01:21

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

プロットするときの色とプロットの表示順を固定すればいいと思います。

python

1import matplotlib.pyplot as plt 2import numpy as np 3plt.style.use('ggplot') 4A=np.random.random((100,2)) 5# 順番1 6plt.figure() 7plt.scatter(A[:50,0],A[:50,1],alpha=0.5, c="red", zorder=1) 8plt.scatter(A[:,0],A[:,1],alpha=0.5, c="green", zorder=2) 9plt.show() 10 11# 順番2(反転) 12plt.figure() 13plt.scatter(A[:,0],A[:,1],alpha=0.5, c="green", zorder=2) 14plt.scatter(A[:50,0],A[:50,1],alpha=0.5, c="red", zorder=1) 15plt.show()

投稿2020/03/15 01:05

TaroToyotomi

総合スコア1430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問