2

次のグラフを生成しました。

http://i47.tinypic.com/s3dd0m.png

かなりの量の長いデータがあり(ここからダウンロードできます:http ://www.sendspace.com/file/lfd31r )、データは次のようになります。

head(data)
  -10:130  variable        value

1     -10 Utilities  0.001680609
2      -9 Utilities  0.004652453
3      -8 Utilities -0.002441692
4      -7 Utilities -0.018639594
5      -6 Utilities -0.007587632
6      -5 Utilities  0.004526066

このグラフィックを生成するために使用したコード:

ggplot(data=data,
       aes(x=-10:130, y=value, colour=variable)) +
    geom_line()

次の図のようなものが必要です。

i46.tinypic.com/2cmvfrq.png

凡例はなくなりましたが、カテゴリの頭字語は、各行の最後に行自体と同じ色で表示されています。読者が何が何であるかを理解するには線と色が多すぎるため、これが必要になります。天才がこれを解決する方法を理解するのを手伝ってくれたら、次に、それぞれ10本の線で4つのパネルプロット(facet_gridを使用)を作成します。

ありがとうございました :)

4

1 に答える 1

4

凡例を削除するには、次を使用できます

+ opts(legend.position = 'none')

プロットにテキストを追加するには、次を使用できます

+ annotate("text",x=XPOSITION,y=YPOSITION,label="TEXTFORPLOT",size=3.5)

あなたの問題を解決するための迅速な汚い試み

library(ggplot2)
## Read in the data from your link. You will have to change this.
dat <- read.csv("~/Downloads/demo.csv")
head(dat)
## Get the y values - turns out they are all 130
label_summary <- aggregate(dat[,2], list(dat$variable), max)
## A quick method to reduce the names, by grabbing the first 3 characters
label_names <- substr(label_summary[,1],1,3)
## get the x values of each variable
label_x <- label_summary[,2]
# A method to get the last y value of each variable
label_y <- sapply(1:length(label_x), function(i) dat[with(dat, dat[, 2]==label_x[i]&dat[, 3]==label_summary[i,1]),"value"])
# Make the plot without legend and text
p <- ggplot(data=dat,aes(x=-10:130, y=value, colour=variable)) + geom_line() + opts(legend.position = 'none')
p 
# Use an sapply function to add the labels one by one to the. This is needed because the label option within the annotate function only allow one label.
p + sapply(1:length(label_x), function(i) annotate("text",x=label_x[i]+10,y=label_y[i],label=label_names[i],size=3.5))
于 2012-07-06T16:26:22.193 に答える