有没有办法为ggplot设置宽度?
我正在尝试将三个时间图组合在一列中。 由于y轴值,绘图具有不同的宽度(两个绘图的轴值在范围(-20,50)内,一个(18 000,25 000) - 这使得绘图更精细)。 我想让所有图表的宽度完全相同。
plot1<-ggplot(DATA1, aes(x=Date,y=Load))+
geom_line()+
ylab("Load [MWh]") +
scale_x_date(labels = date_format("%m/%y"),breaks = date_breaks("months"))+
theme_minimal()+
theme(panel.background=element_rect(fill = "white") )
plot2<-ggplot(DATA1, aes(x=Date,y=Temperature))+
geom_line()+
ylab("Temperature [C]") +
scale_x_date(labels = date_format("%m/%y"),breaks = date_breaks("months"))+
theme_minimal()+
theme(panel.background=element_rect(fill = "white") )
plot3<-ggplot(DATA1, aes(x=Date,y=WindSpeed))+
geom_line()+
ylab("Wind Speed [km/h]") +
scale_x_date(labels = date_format("%m/%y"),breaks = date_breaks("months"))+
theme_minimal()+
theme(panel.background=element_rect(fill = "white") )
grid.arrange(plot1, plot2, plot3, nrow=3)
答案 0 :(得分:1)
您可以简单地使用facetting。首先,你必须做一些数据修改:
library(tidyr)
new_data = gather(DATA1, variable, value, Load, Temperature, WindSpeed)
将Load
,Temperature
和Windspeed
中的所有数据收集到一个大列(value
)中。此外,还会创建一个额外的列(variable
),用于指定向量中的哪个值属于哪个变量。
之后您可以绘制数据:
ggplot(new_data) + geom_line(aes(x = Date, y = value)) +
facet_wrap(~ variable, scales = 'free_y', ncol = 1)
现在ggplot2将负责所有繁重的工作。
ps如果你问问题reproducible,我可以让我的答案重现。