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

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

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

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

2回答

4404閲覧

R標準のplot()でカテゴリデータにそれぞれプロットのマーカーを割り当て

Mikya

総合スコア16

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2018/11/04 07:45

前提・実現したいこと

R 3.5.0で主成分分析の結果を2次元平面上にプロットしたのですが、R標準のplot()で3種類のカテゴリデータにそれぞれプロットのマーカーを割り当てたいです。(色分けはできるのですが…)

プロットのマーカーは、
ラベルsetosaには1の○, versicolorには2の△, virginicaには4の×をつけたいです。

該当のソースコード

R

1data(iris) 2data <- iris[1:4] 3prcomp.obj <- prcomp(data, scale=TRUE) # 主成分分析 4 5pc1 <- prcomp.obj$x[,1] # 第一主成分得点 6pc2 <- prcomp.obj$x[,2] # 第二主成分得点 7 8label <- as.factor(iris[,5]) # 分類ラベル 9percent <- summary(prcomp.obj)$importance[3,2] * 100 # 累積寄与率 10 11plot(pc1, pc2, col = label, main = paste(percent, "%"))

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

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

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

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

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

guest

回答2

0

何度もすみません。訂正です。
長くなったのでコメント欄から回答欄に移動しました。

colはfactor型、pchはnumeric型で認識されているようです。
そのため、factor型を書き直してプロットしてみてはいかがでしょうか。

R

1label2<-as.numeric(label) 2label2[label2==3]<-4 3plot(pc1, pc2, col = label, pch = label2, main = paste(percent, "%"))

↑最後の1行をこの3行に書きなおすとおそらくご希望のプロットになるかと・・・
(色付け不要なら col = label は削除で。)

投稿2018/11/04 11:01

fermat

総合スコア183

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

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

Mikya

2018/11/04 12:38 編集

追加です。こちらの方でプロットの形がカテゴリー別にできました。ありがとうございます。 私の勘違いでコメント欄の方についていた前の方をベストアンサーにしてしまいました…。大変申し訳無いです。高評価とフォローをさせていただきます。
fermat

2018/11/05 01:24

お気になさらず(^^)解決して何よりです~
guest

0

ベストアンサー

colの代わりにpchパラメータを使えばよいのでは。
https://stats.biopapyrus.jp/r/graph/scattergram.html#pch

投稿2018/11/04 08:51

KojiDoi

総合スコア13671

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

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

Mikya

2018/11/04 09:03

ご回答ありがとうございます。 col の代わりにpchをいれると plot.xy(xy, type, ...) でエラー: プロット記号が不正です というエラーが出てしまいます。 カテゴリ別にpch パラメータは使えないのでしょうか?
fermat

2018/11/04 09:50

plot(pc1, pc2, col = label, pch = c(1,2,4), main = paste(percent, "%")) これで通りましたがどうでしょうか。
Mikya

2018/11/04 12:19

試してみたところ解決いたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問