使用新标签在 ggplot 中手动添加 x 轴?
Manual addition of x-axes in ggplot with new labels?
希望这是一个非常简单的问题。我正在尝试使用共享的 x 轴和不同的 y 轴手动标记折线图(温度)和条形图(河流流量)的 x 轴,但我一直不成功,而且我真的不知道为什么。
我的第一个数据集(条形图)如下所示:
我的第二个数据集(折线图)如下所示:
这是我编写的脚本,它给出了下图:
p.dt <- ggplot(discharge, aes(x=date,y=discharge)) +
geom_bar(stat="identity",width=1) +
annotate("rect", xmin=1, xmax=152,ymin=0,ymax=850,alpha=.25) +
geom_line(data = temp.ave, inherit.aes = FALSE, aes(x=num, y=average/0.03, group=1), size=2) +
scale_y_continuous(sec.axis = sec_axis(~.*0.03, name = "Temperature (C)")) +
theme_linedraw(base_size = 18) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
strip.text = element_text(face = "bold")) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
labs(y = "Discharge (cfs)", x = "")
#ggtitle("USGS Gauge 09112200 Discharge and HOBO Temp")
print(p.dt)
好的。因此,我想每四个月手动标记一次 x 轴(例如:11/1/17 到“2017 年 11 月”),并且数据点在两个数据集之间共享。在添加温度层作为第二个轴无济于事之后,我一直在添加一行 scale_x_discrete
:
p.dt <- ggplot(discharge, aes(x=date,y=discharge)) +
geom_bar(stat="identity",width=1) +
annotate("rect", xmin=1, xmax=152,ymin=0,ymax=850,alpha=.25) +
geom_line(data = temp.ave, inherit.aes = FALSE, aes(x=num, y=average/0.03, group=1), size=2) +
scale_y_continuous(sec.axis = sec_axis(~.*0.03, name = "Temperature (C)")) +
scale_x_discrete(labels = c("11/1/17" = "Nov 2017", "3/1/18" = "Mar 2018", "7/1/18" = "Jul 2018")) +
theme_linedraw(base_size = 18) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
strip.text = element_text(face = "bold")) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
labs(y = "Discharge (cfs)", x = "")
#ggtitle("USGS Gauge 09112200 Discharge and HOBO Temp")
print(p.dt)
我想这与我的两个 y 轴和两个独立的数据集有关。想法?
提前谢谢你,
J
您或许可以将列日期设为 Posixct 并使用:
scale_x_datetime(labels = date_format("%m-%Y"), breaks = '4 months') +
另一个选项,按照示例here,您可以将scale_x_discrete
替换为
scale_x_date(date_breaks = "4 month", date_labels = "%m-%Y")
希望这是一个非常简单的问题。我正在尝试使用共享的 x 轴和不同的 y 轴手动标记折线图(温度)和条形图(河流流量)的 x 轴,但我一直不成功,而且我真的不知道为什么。
我的第一个数据集(条形图)如下所示:
我的第二个数据集(折线图)如下所示:
这是我编写的脚本,它给出了下图:
p.dt <- ggplot(discharge, aes(x=date,y=discharge)) +
geom_bar(stat="identity",width=1) +
annotate("rect", xmin=1, xmax=152,ymin=0,ymax=850,alpha=.25) +
geom_line(data = temp.ave, inherit.aes = FALSE, aes(x=num, y=average/0.03, group=1), size=2) +
scale_y_continuous(sec.axis = sec_axis(~.*0.03, name = "Temperature (C)")) +
theme_linedraw(base_size = 18) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
strip.text = element_text(face = "bold")) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
labs(y = "Discharge (cfs)", x = "")
#ggtitle("USGS Gauge 09112200 Discharge and HOBO Temp")
print(p.dt)
好的。因此,我想每四个月手动标记一次 x 轴(例如:11/1/17 到“2017 年 11 月”),并且数据点在两个数据集之间共享。在添加温度层作为第二个轴无济于事之后,我一直在添加一行 scale_x_discrete
:
p.dt <- ggplot(discharge, aes(x=date,y=discharge)) +
geom_bar(stat="identity",width=1) +
annotate("rect", xmin=1, xmax=152,ymin=0,ymax=850,alpha=.25) +
geom_line(data = temp.ave, inherit.aes = FALSE, aes(x=num, y=average/0.03, group=1), size=2) +
scale_y_continuous(sec.axis = sec_axis(~.*0.03, name = "Temperature (C)")) +
scale_x_discrete(labels = c("11/1/17" = "Nov 2017", "3/1/18" = "Mar 2018", "7/1/18" = "Jul 2018")) +
theme_linedraw(base_size = 18) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
strip.text = element_text(face = "bold")) +
theme(axis.text.x = element_blank(), axis.ticks = element_blank()) +
labs(y = "Discharge (cfs)", x = "")
#ggtitle("USGS Gauge 09112200 Discharge and HOBO Temp")
print(p.dt)
我想这与我的两个 y 轴和两个独立的数据集有关。想法?
提前谢谢你,
J
您或许可以将列日期设为 Posixct 并使用:
scale_x_datetime(labels = date_format("%m-%Y"), breaks = '4 months') +
另一个选项,按照示例here,您可以将scale_x_discrete
替换为
scale_x_date(date_breaks = "4 month", date_labels = "%m-%Y")