我一直试图用ggplot2绘制我的双向交互式箱图,到目前为止我还是非常成功。由于我希望观众能够根据它们是负面和正面来比较结果,我认为在y = 0时改变网格线的颜色会很简洁;我搜索了很多,我在网上找不到任何类似的问题。我甚至试图自己操纵主题()功能。
我意识到小网格线不能有标签,如果小网格线和主网格线重叠,该线将继承主线的主题特征。所以,我可以将y = 0转换为没有任何标签的次网格线,或者我可以将y = 0作为主线但是其余的将是次要的,因此,没有显示标签。 (我显然不希望所有的网格线都比y = 0更暗,因为那时它不会非常明显。
下图显示了第一个方案:
p + scale_y_continuous(expand = c(0, 0), breaks = c(-40, 40, -20, 20), minor_breaks = c(0))
+theme(panel.grid.minor.y = element_line(color="#54545B"))
此图表显示第二种情况:
p + scale_y_continuous(expand = c(0, 0), breaks = seq(-40, 40, 40), minor_breaks = c(-20, 20))
+theme(panel.grid.major.y = element_line(color="#54545B"))
有没有人有同样的问题?如果不使用Photoshop(手动操作图表),有没有什么好的解决方案呢?
答案 0 :(得分:1)
我使用geom_hline(yintercept = 0)
。在geom_boxplot
之前指定它,因为它位于框下方的图层中。
示例数据:
set.seed(123)
data.frame(x = rep(c("A", "B"), each = 10),
y = sample(-100:100, 20, replace = TRUE)) %>%
ggplot(aes(x, y)) +
geom_hline(yintercept = 0) +
geom_boxplot()
答案 1 :(得分:0)
除了neilfws的回复之外,还要将您的颜色代码添加到geom_hline()
中的set.seed(123)
data.frame(x = rep(c("A", "B"), each = 10),
y = sample(-100:100, 20, replace = TRUE)) %>%
ggplot(aes(x, y)) +
geom_hline(yintercept = 0,color="#54545B") +
geom_boxplot()
参数中。我编辑了neilfw的代码,包括:
<snippet>
<content><![CDATA[
\documentclass{article}
\usepackage{amsmath}
\title{${1:title}}
\author{...}
\date{[Todays date here automatically]}
\begin{document}
\maketitle
$0
\end{document}
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>document</tabTrigger> -->
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<scope>text.tex.latex</scope> -->
</snippet>