5

私はdoubleYScaleプロットを作りました:

library(lattice)
library(latticeExtra)

# Some data
foo <- list(x = 1:100, y = cumsum(rnorm(100)))

obj1 <- xyplot(y~ x, data=foo,xlab=list(cex=1.2), 
               main="TOtalProduktion VS SummaSkulder/TotaltKapital i procent",
               type = c("l","g"),col="black",
               lty=1,key = simpleKey(col=c('black'),
               text=c("Produktion"),cex=1.2,points=FALSE, lines=TRUE),
               scales=list(x=list(rot=90,tick.number=25,
               cex=1,axs="r")))

obj2 <- xyplot(y^2 ~ x,data= foo ,type = "o",col="black",
               lty=9,key = simpleKey(col=c('black'),
               text=c("Summa.skulder"),cex=1.2,lines=FALSE,points= TRUE))

doubleYScale(obj1, obj2, add.ylab2 = TRUE)

ここに画像の説明を入力

これproblemは、y軸ラベルのテキストサイズを変更することができないということです(yそして、y^2テキストを大きくしたい)。obj1プロットのみ、またはobj2個別に変更しても問題ありませんが、うまくいきませんdoubleYScale...

一方、y 軸の数値のサイズは次のように変更できます。

trellis.par.set(axis.text=list(cex=1))

助言がありますか?私は方法を見つけることができません:(

4

3 に答える 3

6

ここでは、すべての軸ラベルのサイズを個別に設定できる : を直接使用latticeした別のソリューションを示します。latticeExtra

library(lattice)
library(latticeExtra)
foo <- list(x = 1:100, y = cumsum(rnorm(100)))

obj1 <- xyplot(y~ x, data=foo,
               xlab=list("Thing", fontsize = 22),
               ylab = list("Something", fontsize = 32),
               ylab.right = list("Anything", fontsize = 16),
               par.settings = simpleTheme(col = 1),
               type = c("l","g"),
               lty=1,
               scales=list(x=list(rot=90,tick.number=25,
                                  cex=1,axs="r")))

obj2 <- xyplot(y^2 ~ x,data= foo ,type = "o",col="black",
               lty=9)

doubleYScale(obj1, obj2)

ここに画像の説明を入力

于 2014-02-13T04:54:31.693 に答える
4
    library(grid)
    ##  the text size of the 2 y-axic labels
    grid.edit(gPath='GRID.text',grep=T,global=T,gp =gpar(cex=3))

If you want to set different axis sizes

    grobs <- sapply(grid.get(gPath='GRID.text',grep=T,global=T),'[')['name',]
    grid.edit(gPath=grobs[[1]],gp =gpar(cex=2))
    grid.edit(gPath=grobs[[2]],gp =gpar(cex=1.5))

enter image description here

于 2012-12-15T18:54:58.147 に答える
3

これはあなたの質問に直接答えるものではありませんが、誤解を招く可能性があるため、1 つの軸に異なるサイズの 2 つのプロットを混在させることは最善の方法ではない可能性があります。おそらく、を使用したファセットプロットggplotは、同じかそれ以上の仕事をするでしょうか? 以下のすべての要素は簡単に調整できます。

ファセットプロット

library(ggplot2)
library(reshape)

set.seed(123)
foo <- list(x = 1:100, y = cumsum(rnorm(100)))

foo <- as.data.frame(foo)
foo$z <- foo$y^2
mymelt <- melt(foo, id.var = 'x')
mymelt$label <- ifelse(mymelt$variable == 'y', "Produktion", "Summa.skulder")
mymelt$line.colour <- ifelse(mymelt$variable == 'y', "red", "blue") # specify colours here

ggplot(data = mymelt, aes(x = x, y = value)) +
    geom_line(aes(colour = mymelt$line.colour)) +
    facet_wrap(~ label, ncol = 1, scales = "free_y") +
    scale_colour_manual(values = unique(mymelt$line.colour)) +
    ggtitle("TOtalProduktion VS SummaSkulder/TotaltKapital i procent") +
    theme(strip.text.x = element_text(size = 12)) +
    theme(axis.text.x = element_text(size = 9)) +
    theme(axis.text.y = element_text(size = 9)) +
    theme(axis.title.x = element_text(size = 15)) +
    theme(axis.title.y = element_text(size = 15)) +
    theme(axis.title.x = element_blank()) + # comment out this line if you want an x axis title
    theme(axis.title.y = element_blank()) + # comment out this line if you want a y axis title
    theme(legend.position = "none")
于 2012-12-15T03:57:42.423 に答える