#r #ggplot2 #plot
#r #ggplot2 #график
Вопрос:
У меня вопрос о затенении области при использовании R. У меня есть таблица данных, которая выглядит следующим образом:
Теперь я хочу отобразить x и y, что я могу сделать, используя plot(x, y, type =’l’) . Но вопрос в том, как я могу заштриховать область графика (от 0 до бесконечности по оси y) всякий раз, когда мое значение «z» в таблице данных равно 1?
Я действительно ценю ваше желание помочь..
Большое вам спасибо.
Ответ №1:
Я бы предложил следующий ggplot2
подход. Попробуйте создать ссылочную переменную when z==1
, чтобы вы могли определить координаты для оси x, а затем использовать geom_ribbon()
следующим образом:
library(ggplot2)
#Data
df <- data.frame(x=2:9,
y=(2:9)^2,
z=c(rep(1,5),rep(0,3)))
#Create reference
df$Ref <- ifelse(df$z==1,df$x,NA)
#Plot
ggplot(df,aes(x=x,y=y))
geom_line()
geom_ribbon(aes(x=Ref,ymin=0,ymax=Inf),fill='blue',alpha=0.4)
Вывод:
Другие варианты могут быть:
#Create reference
df$Ref <- ifelse(df$z==1,df$x,NA)
df$Ref1 <- ifelse(df$z==1,1,NA)
#Option 1
ggplot(df,aes(x=x,y=y))
geom_line()
geom_ribbon(aes(x=Ref,ymin=y,ymax=Inf),fill='blue',alpha=0.4)
#Option 2
ggplot(df,aes(x=x,y=y))
geom_line()
geom_ribbon(aes(ymin=Ref1,ymax=Inf),fill='blue',alpha=0.4)
Комментарии:
1. Привет .. требуется еще одно исправление…. предположим, что значения столбца z разбросаны как 1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1 и т. Д. … Значения не должны быть затенены 0 .. график затеняет 0 между 1. пожалуйста, помогите мне с этим.
2. @PratikPandey Я добавил два других варианта в заключительной части сообщения. Один из них может быть полезен.
3. Это определенно помогло …. но мне пришлось изменить df $Ref1 <- ifelse(df $ z==1,1,NA) на df $Ref1 <- ifelse(df $ z== 1,0,NA), чтобы получить график от y = 0 до y = inf …. Большое спасибо, что помогли мне