3

次のような配布ファイルがあります。

Function Freq
foo 1117
...
qux 1992
..
bar 4158
..

完全なデータは、ここからダウンロードできます。

私がやりたいことは、次のように密度プロットを作成することです:

  1. geom_vlineを x=800 に配置し、プロットに値 800 を表示します。
  2. 分布の「バー」には、通常の実線ではなく、太さの異なる破線を使用します。

このようなグラフを作成します。 ここに画像の説明を入力

しかし、私は次のコードで立ち往生しています。それを行う最良の方法は何ですか?

library(ggplot2)
library(RColorBrewer)

pal <- c(brewer.pal(8,"Dark2"),brewer.pal(12,"Paired"));
dat<-read.table("http://dpaste.com/1051018/plain/",header=TRUE);
dat.sub <- data.frame(dat$Function,dat$Freq)


ggplot(dat.sub,aes(dat.Freq,color=dat.Function),shape=dat.Function)+
stat_density(geom="path",position="identity",size=0.5)+
theme(legend.position="none")+
scale_color_manual(values=pal)+
geom_vline(xintercept=800,colour="red",linetype="longdash")
4

1 に答える 1

6

線の種類を変更するには、linetype=dat.Function内側に配置して線の種類を変更します。線のサイズも同様です -内側に配置してから、線幅を変更するために使用します (フォームを削除する必要があります) 垂直線の位置をマークするには、変更する方法がありますで x 軸を分割するか、 でプロット内にテキストを追加します。aes()scale_linetype_manual()size=dat.Functionaes()scale_size_manual()size=0.5stat_density()scale_x_continuous()annotate()

ggplot(dat.sub,aes(dat.Freq,color=dat.Function,
            linetype=dat.Function,size=dat.Function))+
  stat_density(geom="path",position="identity")+
  scale_color_manual(values=pal)+
  geom_vline(xintercept=800,colour="red",linetype="longdash")+
  scale_linetype_manual(values=c(2,1,1))+
  scale_size_manual(values=c(2,0.8,0.8))+
  scale_x_continuous(breaks=c(0,800,2500,5000,7500,10000))+
  annotate("text",label="x=800",x=800,y=-Inf,hjust=0,vjust=1)

ここに画像の説明を入力

軸の下にテ​​キストを配置する場合x=800、グリッド オブジェクトを使用する方法と、 と を使用する方法がscale_x_continuous()ありtheme()ます。まず、 と を設定scale_x_continuos()し、位置 800 に を使用します。x 軸の下に 6 つの数字が表示されます。とを使用して、テキストの機能を変更できます。変更する要素の値のベクトルを指定すると、各軸のテキストに個別の機能が追加されます (2. 要素に異なる機能を設定します (テキスト x=800))。breaks=labels=x=800theme()axis.text.x=

ggplot(dat.sub,aes(dat.Freq,color=dat.Function,
               linetype=dat.Function,size=dat.Function))+
  stat_density(geom="path",position="identity")+
  scale_color_manual(values=pal)+
  geom_vline(xintercept=800,colour="red",linetype="longdash")+
  scale_linetype_manual(values=c(2,1,1))+
  scale_size_manual(values=c(2,0.8,0.8))+
  scale_x_continuous(breaks=c(0,800,2500,5000,7500,10000),
                     labels=c(0,"x=800",2500,5000,7500,10000))+
  theme(axis.text.x=
       element_text(color=c("grey35","red","grey35","grey35","grey35"),
                    size=rel(c(1,1.2,1,1,1,1)),
                    face=c("plain","bold","plain","plain","plain","plain")))

ここに画像の説明を入力

于 2013-04-08T10:49:12.753 に答える