- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在多面 ggplot 中标记每个 x 轴的最大值和最小值。我有几个方面具有不同的 x 比例和相同的 y 比例,并且 x 轴刻度标签彼此重叠。与其手动确定每个方面 x 轴的限制和中断,我正在寻找一种方法来标记每个方面的最小值和最大值。
使用 CO2
的示例数据的代码数据集(见 ?CO2
):
CO2$num <- 1:nrow(CO2)
library(reshape2)
CO2.melt <- melt(CO2,
id.var=c("Type",
"Plant",
"Treatment",
"num"))
CO2.melt <- CO2.melt[order(CO2.melt$num),]
library(ggplot2)
ggplot(CO2.melt,
aes(x = value,
y = num)) +
geom_path(aes(color = Treatment)) +
facet_wrap( ~ variable, scales = "free_x",nrow=1)
最佳答案
当你想为刻度标签实现这个时,使用 scales = "free_x"
在一个多面的情节中,这很难自动化。但是,通过一些修补和其他几个软件包的帮助,您还可以使用以下方法:
1) 总结数据以了解在 x 轴上需要哪些刻度标签/中断:
library(data.table)
minmax <- melt(setDT(CO2.melt)[, .(min.val = min(value), max.val = max(value),
floor.end = 10*ceiling(min(value)/10),
ceil.end = 10*floor((max(value)-1)/10)),
variable][],
measure.vars = patterns('.val','.end'),
variable.name = 'var',
value.name = c('minmax','ends'))
> minmax
variable var minmax ends
1: conc 1 95.0 100
2: uptake 1 7.7 10
3: conc 2 1000.0 990
4: uptake 2 45.5 40
brks1 <- c(95,250,500,750,1000)
brks2 <- c(7.7,10,20,30,40,45.5)
p1 <- ggplot(CO2.melt[CO2.melt$variable=="conc",],
aes(x = value, y = num, colour = Treatment)) +
geom_path() +
scale_x_continuous(breaks = brks1) +
theme_minimal(base_size = 14) +
theme(axis.text.x = element_text(colour = c('red','black')[c(1,2,2,2,1)],
face = c('bold','plain')[c(1,2,2,2,1)]),
axis.title = element_blank(),
panel.grid.major = element_line(colour = "grey60"),
panel.grid.minor = element_blank())
p2 <- ggplot(CO2.melt[CO2.melt$variable=="uptake",],
aes(x = value, y = num, colour = Treatment)) +
geom_path() +
scale_x_continuous(breaks = brks2) +
theme_minimal(base_size = 14) +
theme(axis.text.x = element_text(colour = c('red','black')[c(1,2,2,2,2,1)],
face = c('bold','plain')[c(1,2,2,2,2,1)]),
axis.title = element_blank(),
panel.grid.major = element_line(colour = "grey60"),
panel.grid.minor = element_blank())
library(grid)
library(gtable)
fill.legend <- gtable_filter(ggplot_gtable(ggplot_build(p2)), "guide-box")
legGrob <- grobTree(fill.legend)
library(gridExtra)
grid.arrange(p1 + theme(legend.position="none"),
p2 + theme(legend.position="none"),
legGrob, ncol=3, widths = c(4,4,1))
geom_text
或
geom_label
.展示如何实现这一目标的示例:
# create a summary
library(dplyr)
library(tidyr)
minmax <- CO2.melt %>%
group_by(variable) %>%
summarise(minx = min(value), maxx = max(value)) %>%
gather(lbl, val, -1)
# create the plot
ggplot(CO2.melt, aes(x = value, y = num, color = Treatment)) +
geom_path() +
geom_text(data = minmax,
aes(x = val, y = -3, label = val),
colour = "red", fontface = "bold", size = 5) +
facet_wrap( ~ variable, scales = "free_x", nrow=1) +
theme_minimal()
ggplot
中即时获取最小值和最大值。 (归功于
@eipi10 )。另一个使用
geom_label
的例子:
ggplot(CO2.melt, aes(x = value, y = num, color = Treatment)) +
geom_path() +
geom_label(data = CO2.melt %>%
group_by(variable) %>%
summarise(minx = min(value), maxx = max(value)) %>%
gather(lbl, val, -1),
aes(x = val, y = -3, label = val),
colour = "red", fontface = "bold", size = 5) +
facet_wrap( ~ variable, scales = "free_x", nrow=1) +
theme_minimal()
关于r - 在多面 ggplot 中自动勾选最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923155/
我正在构建一个自定义复选框,功能已经差不多了,但样式还有待改进。 我有几个问题, 我需要以圆为中心的支票 我只需要在单击复选框本身而不是文本时激活检查。 恐怕我无法在不使用左侧位置左侧的填充的情况下将
您好,我正在使用 Titanium 创建一个可以检查的行表。 我需要用 Javascript 编写一些代码,只允许检查一行,当检查其中一行时,其他行则取消检查。 我不担心 Titanium 部分,但更
我需要你的帮助。 如何从数组中获取值并使用 HTML 5 的 data 属性选中(勾选)其相关复选框? 即。 var x = "[monday,thursday]" ...经过一些处理后
我在 Winforms 应用程序中有一个 CheckedListBox,其中包含月份作为项目(如一月、二月、三月等)我正在尝试实现这样的功能,即当任何项目被选中时,应该弹出一条消息,说明它已被选中。而
我是一名 iOS 开发新手。我想在我的 UITableViewCell 被选中时添加一个复选标记。选择另一行时,应删除复选标记。我该怎么做? 最佳答案 不要使用 [tableview reloadDa
在我的应用程序中,有 2 个复选框用于获取用户的类型(例如:学生或教师)。我知道我应该使用单选按钮而不是复选框,但我在教程中的问题要求使用复选框(所以请暂时忽略单选按钮)。 即使我选中一个复选框,is
我的 html 页面上有一个表单,其中有一堆复选框作为选项。其中一个选项是“全选”,我希望在选中“全选”框后立即选中所有其他复选框(如果未选中)。我的代码看起来像这样: All Posts
我有一个 JSP,我在其中使用 c:out 打印一些字符串。但我需要通过反斜杠转义所有 '(刻度)。 示例:jsp '"> 打印 tag.title = test's 'test's 但我
我有一个复选框,然后是一个交叉图像,如下所示。 当我单击图像时,复选框应该被选中。我尝试了以下代码。但没有用。 任何人都可以帮助使用 Javascript 来完成它... 最佳答案 你可以使用jQu
我对使用 python 做一个编程游戏很感兴趣,并且我想以 GunTactyx ( http://apocalyx.sourceforge.net/guntactyx/index.php ) 的风格来
我正在使用 UltimateListCtrl 和 LC_LIST 样式。我的列表中的所有项目都带有复选框。填充列表后,我尝试根据从数据库收到的数据动态检查(勾选)一些项目。但在填充列表后,我无法检查(
这个问题在这里已经有了答案: .prop() vs .attr() (18 个答案) 关闭 9 年前。 我已经看过,但无法为我的问题找到简单的答案。我单击其中一个 TR,然后单击另一个 TR,它工作
我有这个 HTML 代码: 如何在 JavaScript 中检查(勾选)值“2”?我无法更改 html 代码,它是公共(public)网站。这是此 radio 的 XPath,值为“2” //*[
请考虑这段代码: plotOptions: { series: { label: { connectorAllowed: false }
我是一名优秀的程序员,十分优秀!