18

R凡例のプロット記号として文字と数字を組み合わせて使用​​することは可能ですか?

plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c("+",16),legend=c("A","B")) #This is the problem
4

5 に答える 5

11

「+」文字に相当する数値を使用します。

plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c(43,16),legend=c("A","B"))
于 2013-08-06T20:39:56.460 に答える
7

私の最初の考えは、凡例を2回プロットすることです。1回は文字記号を印刷し、もう1回は数字記号を印刷します。

plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c(NA,16),legend=c("A","B")) # NA means don't plot pt. character 
legend(7,4.5,pch=c("+",NA),legend=c("A","B"))

注:奇妙なことに、これはRのネイティブグラフィックデバイス(Windows上)およびで機能しますが、またはデバイスでは機能pdf()しません...bmp()png()

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

于 2012-11-19T13:01:33.690 に答える
7

実際には、すべての記号に相当する数値があります。

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

出典:デーブ・ロバーツ

pchコードは、上記のプロットのY座標とX座標を連結したものです。

  • たとえば、+シンボルは行(Y)4と列(X)3にあるため、pch=43を使用して描画できます。

例:

plot(x=c(2,4,8),y=c(5,4,2),pch=16)
points(x=c(3,5),y=c(2,4),pch="+")
legend(7,4.5,pch=c(43,16),legend=c("A","B"))
于 2017-03-28T15:37:27.350 に答える
3

私はこの問題に何度かぶつかったので、以下に小さな関数を書きました。pch値を指定するために使用できます。例:

pch=c(15:17,s2n("|"))

文字列から数値へ

于 2016-08-31T21:07:11.533 に答える
0

前の回答で述べたように、プロットする数値記号と文字記号に相当する数値を追加するだけです。

ただし、関連することは別として、より大きな数値(たとえば、> 100)または文字列(たとえば、'ABC')を記号としてプロットする場合は、の使用に基づいてまったく異なるアプローチを使用する必要がありますtext()

`Plot(x,y,dat,type='n') ; text(x,y,labels = c(100,'ABC')

この場合の凡例の作成はより複雑であり、私がこれまでに思いついた最善のアプローチは、凡例を互いに積み重ね、記号と説明のlegend両方に引数をpch使用することです。

pchs <- c(100,'ABC','540',sum(13+200),'SO77')

plot(1:5,1:5,type='n',xlim=c(1,5.1))
  text(1:5,1:5,labels = pchs)
  legend(3.5,3,legend = pchs,bty='n',title = '')
  legend(3.5,3,legend = paste(strrep(' ',12),'ID#',pchs),bty='n',title='Legend')
  rect(xleft = 3.7, ybottom = 1.5, xright = 5.1, ytop = 3)
  • これはstrrep、テキストを「シンボル」からシフトするためにスペースを連結するために使用rectされ、印刷された凡例テキストの周りにボックスをさかのぼって合わせるために使用されます。

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

于 2018-05-24T18:31:44.023 に答える