2017-09-02 6 views
1

Rのリサーチ記事からいくつかのプロットを再作成しようとしていますが、y軸にログスケールを適用する問題が発生しています。これは、元のまともな表現を生成ggplot2でプロポーションを視覚化するためにy軸にログスケールを適用する

Proportion_Mean_Plot <- ggplot(proportions, aes(days2, 
           proportion_mean, group = observation)) + 
    geom_point(aes(shape = observation)) + 
    geom_line() + 
    scale_x_continuous(breaks = seq(0,335,20)) + 
    scale_y_continuous(breaks = seq(0,6,.5)) + 
    theme_tufte() + 
    geom_rangeframe() + 
    theme(legend.position="none") + 
    theme(axis.line.x = element_line(colour = "black", size = 0.5, linetype = 1), 
     axis.line.y = element_line(colour = "black", size = 0.5, linetype = 1)) + 
    labs(title = "Proportion of Baseline Mean", 
     subtitle = "Daily steps within each intervention phase", 
     x = "DAYS", 
     y = "PROPORTION OF BASELINE \n(MEAN)") + 
    geom_vline(xintercept = 164.5) + 
    geom_hline(yintercept = 1) + 
    annotate("text", x = c(82, 246), y = 5, 
      label = c("Intervention 1", "Intervention 2")) + 
    geom_segment(aes(x = 0, y = mean, xend = end, yend = mean), 
       data = proportion_intervention1_data) + 
    geom_segment(aes(x = start, y = mean, xend = end, yend = mean), 
       data = proportion_intervention2_data, linetype = 4) 

::私は現在、y軸に適用される対数スケールなしの作業バージョンを持っている reference plot with y log scale

:私は再作成しようとしてるの可視化はこれです normally scaled y-axis plot

私はそれをより密接に一致させるためにその対数スケーリングを適用したいと考えています。どんな助けもありがとうございます。リチャードの提案を1として

+1

あなたはおそらく文句を言わないあなたには、いくつかのサンプルデータを追加しない限り、多くの回答を得ます。さもなければ、あなたの答えを改善するオプションで遊ぶことはできません – 5th

+1

'scale_y_log10'? –

答えて

3

、ここにあなたがscale_y_log10を使用することができますどのように簡単な例です:

suppressPackageStartupMessages(library(tidyverse)) 
set.seed(123) 
# generate some data 
proportions <- tibble(interv_1 = pmax(0.4, rnorm(160, mean = 1.3, sd = 0.2)), 
         interv_2 = pmax(0.01, rnorm(160, mean = 1.6, sd = 0.5))) 

proportions <- proportions %>% 
    gather(key = observation, value = proportion_mean) %>% 
    mutate(days2 = 1:320) 

# create the plot 
ggplot(proportions, aes(days2, proportion_mean, group = observation)) + 
    geom_point(aes(shape = observation)) + 
    geom_line() + 
    scale_x_continuous(breaks = seq(0,335,20), expand = c(0, 0)) + 
    scale_y_log10(breaks = c(0.1, 0.5, 1, 2, 3, 4, 5), limits = c(0.1, 5)) + 
    # theme_tufte() + 
    # geom_rangeframe() + 
    theme(legend.position="none") + 
    theme(axis.line.x = element_line(colour = "black", size = 0.5, linetype = 1), 
     axis.line.y = element_line(colour = "black", size = 0.5, linetype = 1)) + 
    labs(title = "Proportion of Baseline Mean", 
     subtitle = "Daily steps within each intervention phase", 
     x = "DAYS", 
     y = "PROPORTION OF BASELINE \n(MEAN)") + 
    geom_vline(xintercept = 164.5) + 
    geom_hline(yintercept = 1) + 
    annotate("text", x = c(82, 246), y = 5, 
      label = c("Intervention 1", "Intervention 2")) + 
    # plugged the values for the means of the two distributions 
    geom_segment(aes(x = 0, y = 1.3, xend = 164.5, yend = 1.3)) + 
    geom_segment(aes(x = 164.5, y = 1.6, xend = 320, yend = 1.6), linetype = 4) 

+0

これは@ LVG77でうまく機能しました。私は元の投稿の外観を達成するために、scale_y_log10(breaks = c(0.1、1、10)、limits = c(0.1,10))と 'annotation_logticks(sides =" l ")の両方を使用して終了しました。 また、 'scale_x_continuous'で 'expand'を使用して頂きありがとうございます。それを手にして、プロットをもっとよく見せました。 –

関連する問題