【发布时间】:2019-07-11 17:41:13
【问题描述】:
我想在辅助轴上显示第二个数据集(橙色线,“Annual”),因为它的值远小于第一个数据集(红线,“Cumulative”)的值。我设法重新缩放了辅助 y 轴,但是我在重新缩放第二个数据集时遇到了问题,因为两个数据集是一起读入的,我不知道如何在代码中单独处理第二个数据集。
数据是这样的
年度累计年度 1960 1 1 1961 1 0 1962 1 0 1963 2 1 ... 2019 334 9
我将不胜感激任何建设性的 cmets!
library("ggplot2")
library("reshape2")
library("tidyverse")
sec_scale=1/10
datu_sub=data[,c(2,3,1)]
datu=melt(datu_sub,id=c("Year"))
p1<-ggplot(datu)+geom_line(aes(x=Year,y=value,colour=variable),linetype="solid",size=1.1)+
geom_point(aes(x=Year,y=value,colour=variable),shape=1,size=3,stroke=1.5)+
scale_colour_manual(values=c("darkorange","red"))+
scale_y_continuous(sec.axis=sec_axis(~.*sec_scale,name="Annual\n"))
p1<-p1+labs(x="\nYear",y="Cumulative\n")
p1+theme(axis.title.x=element_text(size=18),
axis.text.x=element_text(size=14),
axis.title.y=element_text(size=18),
axis.text.y=element_text(size=14),
axis.ticks=element_blank(),
legend.title=element_blank(),
legend.position=c(0.12,0.89),
legend.text=element_text(size=14),
legend.background=element_rect(fill="white",size=0.5,linetype="dotted"))
【问题讨论】:
-
如果在您的
aes()通话中使用y=ifelse(variable == "Cumulative", sec_scale, 1) * value)会有帮助吗?此外,您可以通过在ggplot()调用中定义aes()来简化生活,而不是在每个 geom 中单独定义,除非有来自不同 data.frames 的绘图数据。 -
对不起,你能用不同的词来形容吗?我已尝试执行您的建议,但不确定我是否让您写了。