ggplot中可以使用if_else根据数据改变ylim吗?

问题描述 投票:0回答:2

我编写了一个闪亮的应用程序,允许人们从非常特定的数据文件中绘制预设图表。他们上传文件,选择要绘制的数据,并获得漂亮整洁的 ggplot 图片供下载。 我想根据表中的数据使其中一张图表更加动态。下面示例中 AirFlow 列中的变量可以有 3 个感兴趣的范围:等于/低于 2.5、等于/低于 5 和低于 10。我正在考虑使用 if_else 来指定 ylim 的参数,但我不确定如果可以这样使用的话。我不想创建另一个变量向量,shinyapps 对我来说已经很复杂了,自从我写了这个之后我就忘记了基础知识!

相关图表的代码(正常的 ggplot 格式)和以下错误:

> ggplot(df, aes(hrs, AirFlow))+
 geom_line(size = 1, color = "#00B388")+
 scale_x_continuous(breaks = breaks_extended(n = 10))+
 if_else(max(df$AirFlow <= 2.5) == 1, ylim(0, 3), if_else(max(df$AirFlow <= 5) == 1, ylim(0, 6),  ylim(0, 10)))

true[rep(NA_integer_, length(condition))] 中的错误:类型的对象 “环境”不可子集化

r ggplot2 dplyr
2个回答
0
投票

也许就这样做?:

yl = case_when(max(df$AirFlow)<2.5~3,max(df$AirFlow)<=5~6,TRUE~10)

ggplot(df, aes(hrs, AirFlow))+
  geom_line(size = 1, color = "#00B388")+
  scale_x_continuous(breaks = breaks_extended(n = 10))+
  ylim(0,yl)

0
投票

以下内容对您有用吗?

ggplot(df, aes(hrs, AirFlow))+
geom_line(size = 1, color = "#00B388")+
scale_x_continuous(breaks = breaks_extended(n = 10))+
ylim( 0, ifelse(  max(df$AirFlow  <= 2.5) == 1, 
             3 ,
             ifelse(  max(df$AirFlow  <= 5) == 1,
                      6,
                      10)))
© www.soinside.com 2019 - 2024. All rights reserved.