我使用了以下ggplot命令:
ggplot(survey, aes(x = age)) + stat_bin(aes(n = nrow(h3), y = ..count.. / n), binwidth = 10)
+ scale_y_continuous(formatter = "percent", breaks = c(0, 0.1, 0.2))
+ facet_grid(hospital ~ .)
+ theme(panel.background = theme_blank())
Run Code Online (Sandbox Code Playgroud)
生产
我想将facet标签更改为更短的标签(如Hosp 1,Hosp 2 ......),因为它们现在太长并且看起来很狭窄(增加图形的高度不是一个选项,它需要文档中的空间太大).我查看了facet_grid帮助页面,但无法弄清楚如何.
我有大量的数据系列,我想用小倍数绘制.ggplot2的组合和facet_wrap
我想要的,通常产生一个漂亮的小块6 x 6面.这是一个更简单的版本:
问题是我对小面条上的标签没有足够的控制.数据框中列的名称很短,我希望保持这种方式,但我希望facet中的标签更具描述性.我可以使用,facet_grid
以便我可以利用该labeller
功能,但似乎没有直接的方式来指定列数和一长串的方面只是不适用于此特定任务.我错过了一些明显的东西吗
问:如何在不更改列名的情况下使用facet_wrap时更改构面标签?或者,如何在使用facet_grid时指定列数和行数?
下面是简化示例的代码.在现实生活中,我正在处理多个组,每个组包含数十个数据系列,每个系列都经常更改,因此任何解决方案都必须自动化,而不是依赖于手动分配值.
require(ggplot2)
require(reshape)
# Random data with short column names
set.seed(123)
myrows <- 30
mydf <- data.frame(date = seq(as.Date('2012-01-01'), by = "day", length.out = myrows),
aa = runif(myrows, min=1, max=2),
bb = runif(myrows, min=1, max=2),
cc = runif(myrows, min=1, max=2),
dd = runif(myrows, min=1, max=2),
ee = runif(myrows, min=1, max=2),
ff = runif(myrows, min=1, max=2))
# Plot using facet wrap - we want to specify the columns
# and …
Run Code Online (Sandbox Code Playgroud) 这个问题是参考这个问题
上面的问题是关于更改facet_wrap的标签,答案是完美的 - >添加修改后的标签作为数据集的新列.
现在,我面临的问题是 -
用户选择多个变量 selectInput("select", h4("Variables:"), choices=var.both1(), selected=var.both1()[1], multiple=T, width="100%")
(例如:让我们考虑input$select
长度可以是6)现在input$select
包含六个变量,我想检查每个变量并为其分配单位,我可以通过以下反应组件部分实现这一点
variableunit <- reactive ({
if(input$select == "TEPC") {"degC"}
else if(input$select == "AT"){"µmol/kg"}
else if(input$select == "DIC" | input$select == "DIN" | input$select == "PIC" | input$select == "POC" | input$select == "PON" | input$select == "POP" | input$select == "DOC" | input$select == "DON" | input$select == "DOP" | input$select == "TEP"){c("µmol/L")}
else if(input$select == "Chla"){"µg/L"}
else ("Meters")
})
Run Code Online (Sandbox Code Playgroud)
在variableunit …