0

ggplotファセットプロットで 10 進数のゼロの後にどのように配置できるのか疑問に思っています。次の写真はそれをより明確にします。facetsr-squared =0.61 と 0.30 を の 2 つのggplot使用法で書きたいと思いgeom_textます。0.61 を適切に書き込みますが、2 番目のプロットでは 0.30 ではなく 0.3 のみを書き込みます。図を参照してください。私の作業データとコードは以下のとおりです。

 dput(ssdata)
 structure(list(Value = c(0.0776799352545487, 0.0249900650410425, 
 0.0530261633888124, 0.0567436050950435, 0.0120449632406235, 0.0148445528174501, 
 0.00322103330067226, 0.0841269995036878, 0.0667567417539399, 
 0.0353554071120496, 0.0168391247006024, 0.0187554325376238, 0.0862325738977503, 
 0.0353403282165527, 0.0459572764543387, 0.0153406669137266, 0.0390336212195695, 
 0.0620484352111816, 0.0489626884460449, 0.0221186299849756), 
 Ft = c(1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 
 1, 1, 1), RT = c(869, 722, 1790, 875, 1524, 1314, 1061, 919, 
 1525, 1127, 932, 1182, 1046, 1004, 1238, 1497, 1066, 1500, 
 1654, 903), Season = c("Winter", "Spring", "Spring", "Winter", 
 "Summer", "Fall", "Fall", "Winter", "Winter", "Spring", "Summer", 
 "Summer", "Winter", "Winter", "Spring", "Fall", "Spring", 
 "Winter", "Spring", "Spring"), fac = structure(c(1L, 2L, 
 2L, 1L, 3L, 4L, 4L, 1L, 1L, 2L, 3L, 3L, 1L, 1L, 2L, 4L, 2L, 
 1L, 2L, 2L), .Label = c("Winter", "Spring", "Summer", "Fall"
 ), class = "factor")), .Names = c("Value", "Ft", "RT", "Season", 
 "fac"), row.names = c(51L, 1320L, 1341L, 427L, 2384L, 3342L, 
  3111L, 16L, 330L, 1062L, 2501L, 2500L, 61L, 711L, 941L, 3171L, 
 973L, 610L, 1418L, 1524L), class = "data.frame")

 dput(data)
 structure(list(fac = structure(1:4, .Label = c("Winter", "Spring", 
 "Summer", "Fall"), class = "factor"), tp = c("R^2== 0.26", "R^2== 0.61", 
 "R^2== 0.30", "R^2== 0.22"), ttp = c("n== 844", "n== 844", "n== 844", 
  "n== 844"), family = c("serif", "serif", "serif", "serif"), fontface = c("italic", 
  "italic", "italic", "italic"), size = c(5, 5, 5, 5), x = c(0, 
  0, 0.8, 0.8), y = c(2000, 2000, 2000, 2000), yy = c(1800, 1800, 
  1800, 1800)), .Names = c("fac", "tp", "ttp", "family", "fontface", 
  "size", "x", "y", "yy"), row.names = c(NA, -4L), class = "data.frame")

コード:

plot.sea1<-ggplot(ssdata,aes(x=10*Value, y= RT))+
geom_point()+
#stat_smooth(method="loess", se=F,fullrange=TRUE, size=0.8)+
facet_grid(fac~.,scales="free_x")+
geom_text(data=data,aes(x=x,y=y,label=tp),parse=TRUE,inherit.aes=F,show_guide=  F,size=3)
plot.sea1

ここに画像の説明を入力

4

1 に答える 1

2

渡している r2 string.you が解析される方法が原因で問題が発生しています。

編集

データに対して以前の投稿 (以下) のメソッドを使用する:

lm_eqn <- function(ssdata){
           m = lm(RT ~ Value, ssdata)
           eq <- substitute(italic(r)^2~"="~r2, 
                   list(r2 = formatC(summary(m)$r.squared, digits = 2)))
           as.character(as.expression(eq))          
        }

eq1 <- ddply(ssdata,.(fac), lm_eqn)

plot.sea1 <- ggplot(ssdata,aes(x=10*Value, y= RT)) +
                 geom_point() +
                 stat_smooth(method="loess", se=F,fullrange=TRUE, size=0.8) +
                 facet_grid(fac~.,scales="free_x") + 
                 geom_text(data=eq1 ,aes(x = 0.6, y = 1200, label=V1), 
                                                               parse = TRUE)

最初の投稿

# example using mtcars
data(mtcars)

# facetted plot similar to yours
p <- ggplot(mtcars, aes(mpg, wt)) + 
        geom_point(aes(color=factor(vs))) +
        stat_smooth(method="loess", se=F,fullrange=TRUE, size=0.8) + 
        facet_grid(am ~.)


eq <- data.frame(am = c(0,1), r2 =  c("italic(r)^2 == 0.30",
               as.character(as.expression(substitute(italic(r)^2~"="~r2, 
                       list(r2 = formatC(0.30, format = "f", digits = 2)))))))

eq
#  am                         r2
# 1  0        italic(r)^2 == 0.30
# 2  1 italic(r)^2 ~ "=" ~ "0.30"

# add the text
p + geom_text(data=eq ,aes(x = 25, y = 5, label=r2), parse=TRUE)

2 番目のみが正しく解析されます。文字列を渡すだけで、トレーニング ゼロが削除されます。

したがって、ここでJT85 の回答を使用すると、r2 文字列を生成する別の方法が得られます。

# define a function to generate r2 string
lm_eqn <- function(mtcars) {
              m = lm(mpg ~ wt, mtcars)
              eq <- substitute(italic(r)^2~"="~r2, 
                          list(r2 = formatC(summary(m)$r.squared, digits = 2)))
                                               as.character(as.expression(eq))   
          }

library(plyr)
# generate r2 string
eq1 <- ddply(mtcars, .(am), lm_eqn)

# plot
p + geom_text(data=eq1 aes(x = 25, y = 5, label=V1), parse = TRUE)
于 2014-08-03T20:51:47.150 に答える