我正在创建一个非常简单的绘图,它将数据分组并使用分组变量来确定线条样式和颜色.然后我使用'scale_linetype_manaul'和'scale_colour_manual'覆盖那些.到目前为止一切都那么好,但是当我尝试修改图例标签或其标题时,图例分为两部分:一部分用于线型,一部分用于颜色.我只想要一个传奇,但有自定义标签和标题.
在这个问题之后,我确保将两个比例对象命名为相同,但这似乎没有帮助.
最小的例子:
X <- data.frame(TPP=factor(c(1,5,10,1,5,10,1,5,10)),
value=c(-0.035819, 0.003356, 0.066091, -0.028039, 0.004333, 0.060292, -0.023115, 0.005661, 0.058821),
horizon=c(1,1,1,2,2,2,3,3,3))
ggplot(X, aes(x=horizon, y=value, group=TPP, col=TPP, linetype=TPP))+
geom_line(size=1)+
scale_linetype_manual(name="X", values = c("solid","dashed", "dotted")) +
scale_color_manual(name="X", values = c("black", "red", "blue"), labels=c("Low", "5","High"))
Run Code Online (Sandbox Code Playgroud)
这产生了下图和两个图例.如何使用自定义标签和标题重新组合这些图例?
我试图在 Latex 文档中使用 knitr 将两个子图垂直堆叠而不是并排放置。在 Latex 中,我通常通过在需要彼此堆叠的两个子浮点之间放置一个 '\par' 命令来做到这一点,但我不知道如何将该命令传递给 knitr。
我只能找到一个关于此的主题,使用 knitr 的子图或子标题?. Yihui 给出的例子将数字并排。该线程中的最终答案实现了我的目标,但是使用了相当多的黑客技术,所以我想知道是否有一种简单的方法可以将此命令直接传递给 knitr?
MWE:
\documentclass[a4paper]{article}
\usepackage[font=footnotesize]{subfig}
\begin{document}
<<GeneratePlot>>=
library(ggplot2)
library(tikzDevice)
P1 <- ggplot(data=mpg, aes(x=displ, y=hwy, colour=factor(cyl)))+
geom_line()
P2 <- ggplot(data=mpg, aes(x=displ, y=hwy, colour=factor(cyl)))+
geom_point()
@
<<fig1,eval=TRUE,echo=FALSE,dev='tikz', fig.width=6, fig.height=3, out.width='1\\textwidth', fig.cap='Two figures', fig.subcap=c('Top','Bottom'), fig.show='asis', fig.pos='!htpb', fig.align='center', dependson='GeneratePlot'>>=
P1
P2
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
我还尝试在与输出相同的块中创建绘图对象,但这会产生相同的结果,并且在我的原始文档中,绘图对象是作为更大块的一部分生成的,因此它将具有与 MWE 相同的结构.