在ggplot2中,元素的大小是单独指定的.当图形的大小发生变化时,元素(例如图例)不会改变.当输出ggplot2数字的大小随浏览器窗口而变化时,这可能是Shiny中的问题.下面是虚拟Shiny应用程序的代码和不同浏览器窗口大小的两个输出数字.较小的数字是丑陋的,因为其传奇的一部分已被切断.
有没有一种方法可以直接在ggplot2中使用图形大小缩放图例大小,而无需将图形预先保存为Shiny应用程序的图像文件?
library(shiny)
library(ggplot2)
ui <- fluidPage(
br(), br(), br(),
plotOutput("test", height = "auto")
)
server <- function(input, output, session) {
output$test <- renderPlot(
height = function() {
0.8 * session$clientData$output_test_width
},
expr = {
aaa <- ggplot(mtcars, aes(wt, mpg, color = cyl)) +
geom_point() +
theme(legend.position = c(0.9, 0.9))
print(aaa)
}
)
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
但是在小浏览器窗口中,图例顶部没有显示:
我正在关注这个ggplot2文档尝试重现文本标签geom_label.但是我收到了一条错误消息,
"找不到函数geom_label"
.?geom_label也说没有这样的功能.我检查了另外两台计算机并得到了相同的错误消息.所有都是R 3.22,RStudio 0.99.489或纯R命令.ggplot2是安装版本1.01 install.packages(ggplot2).我没有找到谷歌的线索.因此,geom_label在制作任何文档之前,似乎已从最新的ggplot2中删除.
我的问题是:什么用于替换geom_label,它在盒装背景中产生漂亮的文本标签?
以下是ggplot2文档中的代码,它们假设生成下图.
p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
p + geom_label()
Run Code Online (Sandbox Code Playgroud)
Reduce()Hadley Wickham的书籍Advanced R有两个功能的例子.两者都运作良好.
Reduce(`+`, 1:3) # -> ((1 + 2) + 3)
Reduce(sum, 1:3) # -> sum(sum(1, 2), 3)
Run Code Online (Sandbox Code Playgroud)
但是,在使用mean时Reduce(),它不遵循相同的模式.结果始终是列表的第一个元素.
> Reduce(mean, 1:3)
[1] 1
> Reduce(mean, 4:2)
[1] 4
Run Code Online (Sandbox Code Playgroud)
这两个功能sum()和mean()非常相似.为什么一个可以正常使用Reduce(),但另一个没有?如何在函数Reduce()给出错误结果之前知道函数是否正常运行?
我知道如何使用自定义css文件更改R markdown样式.但是,当更改很小时,我更喜欢内部或内联css,以节省管理两个文件的麻烦.我用谷歌搜索,并没有找到解决方案.下面是使用外部css文件更改样式的简单示例.有没有办法用内部或内联css做到这一点?
R降价文件:
---
title: "test"
output:
html_document:
css: test.css
---
## Header 1 {#header1}
But how to change style with internal css?
Run Code Online (Sandbox Code Playgroud)
test.css文件:
#header1 {
color: red;
}
Run Code Online (Sandbox Code Playgroud)