r - 有没有办法指定轴的上限范围?
问题描述
我正在ggplot
使用闪亮的应用程序处理 covid 案例的交互式图表。用户可以选择区域以查看新案例。目前,我的 y 轴会根据用户选择的区域中的案例数量进行调整。
我希望 y 轴的下限始终为 0,但 y 轴的上限至少从 50 开始并根据所选数据进行扩展。否则,有少数病例的小城镇有非常高的酒吧,这是不可取的。我知道我可以使用以下设置硬性上限和下限。
scale_y_continuous(limits=c(0,50))
但我需要一些更复杂的东西,比如
scale_y_continuous(limits=c(0,50-400))
这个功能存在吗?谢谢。
解决方案
为什么不在你的renderPlot()
函数中定义一个上限,它是50
or的最大值max(y_value)
?像这样的东西应该可以工作,plot_function()
您renderPlot()
在应用程序中的功能在哪里:
set.seed(1234)
x <- 1:100
df1 <- data.frame(x,y=sample(1:10, 100, replace=TRUE))
df2 <- data.frame(x,y=sample(1:500, 100, replace=TRUE))
plot_function <- function(d) {
upper_lim <- max(c(50, max(d$y)))
p <- ggplot(d, aes(x,y)) + geom_point() +
ylim(0,upper_lim) +
ggtitle(deparse(substitute(d))) # prints name of d object
print(p)
}
比较plot_function()
发送时间df1
与发送时间的图df2
(cowplot
为清楚起见使用):
library(cowplot)
p1 <- plot_function(df1)
p2 <- plot_function(df2)
plot_grid(p1,p2)
renderPlot() 函数应该是什么样的?
我开始用另一条评论来回答您的评论,但我认为最好发布对答案的编辑。考虑到您引用了一个函数来返回您的绘图数据框(称为plotdata()
),这就是我要尝试的方法。注意upper_lim
需要在函数中定义然后用于ggplot()
调用。我发现renderPlot()
将绘图存储到变量中最简单,然后print()
是该绘图:
output$my_plot <- renderPlot({
upper_lim <- max(c(50, max(plotdata()$y)))
p <- ggplot(...) + ylim(0, upper_lim)
print(p)
})
推荐阅读
- ios - 无法在 iOS Swift 中显示可用的蓝牙设备(无线耳机名称)
- java - 有没有办法检查用户是否按下回车键进入下一行?
- python-3.x - 如何用另一个字典中的值替换字典列表中的键?
- function - Powershell:如何重复条件直到传递有效值?
- npm - NPM 对等依赖冲突
- qt - Qt Installer Framework:使用在线安装程序删除组件
- protocol-buffers - 如何在 google protobuf 中正确声明数组
- c - 将 float32 的 Go 切片作为 C float[] 传递给 CGo
- imageresizer - 输出为 png 时,从 tif 图像中屏蔽/剪切对象
- pdfjs - 如何在 PDFJS 查看器中启用注释