Ns

ggplotの6つ以上の形状



More Than Six Shapes Ggplot



解決:

まず、変換する方が簡単です要因にsn。

df $ sn<- factor(df$sn)  

次に、使用する必要がありますscale_shape_manualを使用して、使用する形状を指定します。



gp<- ggplot(df,aes(x=t, y=y, group=sn,color=sn, shape=sn)) + scale_shape_manual(values=1:nlevels(df$sn)) + labs(title = 'Demo more than 6 shapes', x='Theat (deg)', y='Magnitude') + geom_line() + geom_point(size=3) gp  

これはあなたが望むものを与えるはずです。あなたは使用する必要がありますscale_shape_manualなぜなら、要因としてのsn、ggplotは、最大6つの異なるシンボルのみを自動的に追加します。その後、手動で指定する必要があります。シンボルはさまざまな方法で変更できます。方法の詳細については、次のページをご覧ください:http://sape.inf.usi.ch/quick-reference/ggplot2/shape
http://www.cookbook-r.com/Graphs/Shapes_and_line_types/

ここに画像の説明を入力してください




私にとって、6つの形状に関するエラーメッセージの鍵は、次のような部分です。形状を手動で指定することを検討してください。

追加する場合の値scale_shape_manual、私はあなたが望むものを手に入れると信じています。作った最初にデータセット内の因子をsnします。

df $ sn = factor(df $ sn)ggplot(df、aes(x = t、y = y、group = sn、color = sn、shape = sn))+ geom_point()+ geom_line()+ scale_shape_manual(values = 0:10)

どの番号がどの形状に対応しているかを覚えておく必要がある場合は、Cookbook forRサイトにアクセスします。



編集 上記の例は、サンプルデータセットの同じ数のシンボルである11個のシンボルを追加することを示しています。あなたのコメントは、あなたがより多くのユニークな価値を持っていることを示していますあなたの例よりもsn変数。で長い一連の数字を使用する場合は注意してくださいすべての数値が記号として定義されているわけではないため、値。

1つのグラフィックに非常に多くの図形を含めることをお勧めするかどうかを無視して、図形として記号だけでなく文字や数字も使用できます。したがって、たとえば、73レベルの係数に基づいて73の一意の形状が必要な場合は、19個の記号、すべて大文字と小文字、および数字の0と1を使用できます。値。

scale_shape_manual(values = c(0:18、letters、LETTERS、 '0'、 '1')) 

必要に応じて、約100種類の形状を取得できます。 good.shapesは、塗りつぶし引数なしで画面に表示される形状番号のベクトルです。

library(ggplot2)N = 100; M = 1000 good.shapes = c(1:25,33:127)foo = data.frame(x = rnorm(M)、y = rnorm(M)、s = factor(sample(1:N、M、replace = TRUE)))ggplot(aes(x、y、shape = s)、data = foo)+ scale_shape_manual(values = good.shapes [1:N])+ geom_point()