2

を使用して、多くの点と線を持つggplot2グラフにラベルを追加しようとしていgeom_lineます。グラフにはデータポイントと直線が多すぎるため、非常に雑然と見えます。

エンドユーザーがどの線がどのサーバーに属しているかなどを明確に把握できるように、直線にラベルを追加したいと思います。

私のデータフレームは次のようになります

> z
Hostname    Memory  Date
ServerA         50  2012-01-01 01:00:00
ServerB         30  2012-01-01 01:00:00
ServerC         30  2012-01-01 01:00:00
ServerD         20  2012-01-01 01:00:00
ServerE         80  2012-01-01 01:00:00

ServerA         20  2012-01-02 01:00:00
ServerB         10  2012-01-02 01:00:00
ServerC         5   2012-01-02 01:00:00
ServerD         39  2012-01-02 01:00:00
ServerE         50  2012-01-02 01:00:00



p <- ggplot(z, aes(x=Date, y=Memory, colour=Hostname, size=0.1)) + 
        geom_point(size=0.1) + theme_bw

() + geom_smooth(method = "lm", se=FALSE, size = 1) + 
         theme_bw() + geom_point(size=0.2)

direct.label(p, "last.points")またはを使ってみfirst.pointsましたが、まだはっきりしていません。そして、last.pointsを実行すると、ラベルが切り取られます。

ラインにラベルを付けることは可能lmですか?

4

1 に答える 1

0

元のスクリプトでいくつかの設定を変更します: group=Hostname を追加し、最初の行から size=0.1 を削除しました。次の行で geom_point をカスタマイズできます (形状を x に変更しました)。geom_smooth 関数の場合は、使用: aes(group = Hostname)、そして最後に direct.label() が正常に動作します。

library(ggplot2)  
library(directlabels)  
myplot<-ggplot(z, aes(x=Date, y=Memory, group=Hostname, colour=Hostname))+  
geom_point(size=3, shape=4) +  
geom_smooth(method = "lm", aes(group = Hostname), se=FALSE, size=1)  
myplot<- direct.label(myplot, "last.points")  

私が知る限り、これには事前に作成された方法はありません。独自の「位置決め方法」を作成する必要があります。「勾配」は lm 曲線の勾配です。(ご覧のとおり、まだ動的ではありません)

slope<-c(-30,-20, 60, 50, -40)  
label.above <- list("first.points", rot = slope, hjust = -0.5, vjust = -0.5)  
direct.label(myplot, label.above)

ここで、z は次のとおりです。

z<-structure(list(Hostname = structure(c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L), .Label = c("ServerA", "ServerB", "ServerC", "ServerD", "ServerE"), class = "factor"), Memory = c(50L, 30L, 30L, 20L, 80L, 20L, 10L, 5L, 39L, 50L), Date = structure(c(2L, 2L, 2L, 2L, 2L, 3L, 3L, 1L, 3L, 3L), .Label = c("  2012-01-02 01:00:00", " 2012-01-01 01:00:00", " 2012-01-02 01:00:00"), class = "factor")), .Names = c("Hostname", "Memory", "Date"), class = "data.frame", row.names = c(NA, -10L))
于 2012-07-31T19:38:58.807 に答える