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

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

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

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

Q&A

解決済

1回答

976閲覧

matplotlibを用いた、グラフの作成について

kater

総合スコア7

Matplotlib

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

0グッド

0クリップ

投稿2021/06/10 15:17

編集2021/06/10 23:27

前提・実現したいこと

matplotlibを用いて、主成分得点の第1主成分要素と第2主成分要素からグラフを作りたい。その際、特定のサンプルについては他のサンプルと色を変えてプロットしたい。

発生している問題・エラーメッセージ

グラフにplotされなくて困っています。初歩的な質問かもしれませんが、力を貸していただきたいです。

該当のソースコード

# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt D=np.loadtxt('PLIliveJ.dat',skiprows=1,) D=D[:,[6,12,16,17,18,21,22]] print(D) #データの標準化 parameta_number=D.shape[1] data_number=D.shape[0] Ds=np.zeros((parameta_number,data_number)) Ds=Ds.tolist() for i in range(parameta_number): Dd=D[:,i:i+1] mean=np.average(Dd) std=np.std(Dd) for j in range(data_number): Dd[j]=(Dd[j]-mean)/std Ds[i][j]=Dd[j] Ds=np.array(Ds) Ds=Ds.T Ds=Ds[0] print("標準化されたデータ行列") print(Ds) #特異値分解を実施 u,w,vt = np.linalg.svd(Ds,full_matrices=False) #u,w,vtを出力 print("u") print(u) print("w") print(w) print("v") print(vt.T) #寄与率 conr=np.array([]) for i in range(len(w)): conr=np.append(conr,np.array([w[i]*w[i]/u.shape[0]])) conr=conr.reshape([len(w),1]) conr=conr[:,0].tolist() print("寄与率") print(conr) #累積寄与率 d=np.cumsum(conr) print("累積寄与率") print(d) #因子負荷量 def consum(conr,v,w): consum=np.array([]) for i in range(len(w)): consum=np.append(consum,np.array([np.sqrt(conr[i])*v[:,i]])) consum = consum.reshape([len(w),len(v)]) consum=consum.T return consum print("因子負荷量") v=vt.T print(consum(conr,v,w)) #主成分得点 print("主成分得点") t=D@v print("t") print(t) tsize=t.shape[0] #第一主成分と第二主成分をプロットする plt.figure(figsize=(6, 6)) for i in range(tsize): if(i==11 or 12 or 13 or 22 or 25 or 26 or 39): plt.plot(t[i,0], t[i,1], color = "blue") else: plt.plot(t[i,0], t[i,1], color = "red") plt.grid() plt.xlabel("PC1") plt.ylabel("PC2") plt.show() #累積寄与率のグラフ left = np.arange(len(d)) # 横軸のデータ height = np.array(d/len(d)) # 縦軸のデータ plt.figure() plt.bar(left, height, align="center", width=0.5) # 棒グラフを作成 y_line = 0.8 # 補助線のレベル plt.axhline(y_line, linestyle='dashed') #補助線を書き込む plt.xlabel('Number of principal components') # xlabel関数:横軸のラベル plt.ylabel('Cumulative contribution rate') # ylabel関数:縦軸のラベル plt.show() #グラフの描画

次の図はコンソールのスクリーンショットになります。
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1 if(i==11 or 12 or 13 or 22 or 25 or 26 or 39): 2 plt.plot(t[i,0], t[i,1], color = "blue") 3 else: 4 plt.plot(t[i,0], t[i,1], color = "red")

↓ 修正

python

1 if(i==11 or i==12 or i==13 or i==22 or i==25 or i==26 or i==39): 2 plt.plot(t[i,0], t[i,1], color = "blue", marker='.') 3 else: 4 plt.plot(t[i,0], t[i,1], color = "red", marker='.')

投稿2021/06/11 01:09

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問