1

私はこれらの2つの要件で問題に直面しています:

  • y軸は3から開始する必要があります
  • 一部geom_textは右側のチャートから外れます

ここに画像の説明を入力してください

これまでの私の考えとその欠点:

  • すべてのデータセットと偽のy軸ラベルから-3を引きます(したくない)
  • 高さ3のダミーgeom_barを作成します(凡例から除外する方法は?)

任意のアイデアをいただければ幸いです!

library(grid)
library(ggplot2)

df=data.frame(
  Date=c("2012-11-30", "2012-12-03", "2012-12-04"),
  d1=c(12, 8, 13),
  d2=c(13, 7, 12),
  e1=c(7, 9, 8)
)

frame()
p=ggplot(df, aes(Date)) + 
    geom_bar(aes(y=e1, fill="e1"), stat="identity", color="red") +
    geom_line(aes(y=d1, group=1, color="d1")) +
    geom_line(aes(y=d2, group=1, color="d2")) +
    geom_text(aes(x =3.5, y=c(14,13,12), label=c("Text1","Text2","Text3"))) +
    scale_colour_manual(" ", values=c("e1"="red", "d1"="blue", "d2"="black"))+
    scale_fill_manual("", values="red") +
    coord_cartesian(ylim=c(3,15), xlim=c(0.5,3.5)) +
    theme(legend.key=element_blank(),legend.title=element_blank(),
          legend.position="top", legend.box="horizontal",
          plot.margin=unit(c(1, 2, 1, 1), "cm"))

p1 <- ggplot_gtable(ggplot_build(p))
p1$layout$clip[p1$layout$name=="panel"] <- "off"
grid.draw(p1)
4

1 に答える 1

4

独自のスケール変換を定義します

library(scales)
translate3_trans <- function() {
  trans <- function(x) x - 3
  inv   <- function(x) x + 3
  trans_new("translate3_trans", trans, inv)
}      

次に追加します

       p <- p + scale_y_continuous(trans="translate3")

ここに画像の説明を入力してください

geom_textを正確にどこに配置したいかわかりません。

PS:申し訳ありませんが、あなたの赤が私の目を傷つけるので、アルファを0.5に変更します。

于 2012-12-11T02:23:08.373 に答える