简体   繁体   English

相同的y轴,但不同的x轴图-

[英]same y-axis but different x-axis graph -

  • How I can change this graph, so that I will have one legend but the same size of x and y axis in all three sub-graphs? 如何更改此图,以便在所有三个子图中都有一个图例,但x和y轴的大小相同?

y轴相同但x轴不同的图形。

Here is my code: 这是我的代码:

eu <- ggplot(regions_dist6, aes(x=log(pop_density1), y=log(ET_pc_y))) + geom_point(aes(colour = urb_lvl, size=car_dw_share),  alpha = 0.2)
eu1 <- eu + scale_color_gradient(low="blue", high="red", name = "% Urbanization") 
eu2 <- eu1 + geom_smooth(span = .95) + ylab (bquote('log Commuting emissions ('*kgCO[2]/cap/year*')')) + 
  xlab (bquote('log Population density '*(p/km^2)*'')) 
eu3 <- eu2 + labs(size = "% 4-Wheelers") + theme_light()

ed <- ggplot(regions_dist6, aes(x=log(utm44_RoadDens_km_sqkm), y=log(ET_pc_y))) + geom_point(aes(colour = urb_lvl, size=car_dw_share),  alpha = 0.2)
ed1 <- ed + scale_color_gradient(low="blue", high="red", name = "% Urbanization") 
ed2 <- ed1 + geom_smooth(span = .95) + ylab (bquote('log Commuting emissions ('*kgCO[2]/cap/year*')')) + 
  xlab (bquote('log Road density '*(km/km^2)*''))
ed3 <- ed2 + labs(size = "% 4-Wheelers") + theme_light()

eg <- ggplot(regions_dist6, aes(x=log(gdp_pc_inr), y=log(ET_pc_y))) + geom_point(aes(colour = urb_lvl, size=car_dw_share),  alpha = 0.2)
eg1 <- eg + scale_color_gradient(low="blue", high="red", name = "% Urbanization") 
eg2 <- eg1 + geom_smooth(span = .95) + ylab (bquote('log Commuting emissions ('*kgCO[2]/cap/year*')')) + 
  xlab (bquote('log GDP (₹/c)'))
eg3 <- eg2 + labs(size = "% 4-Wheelers") + theme_light()

grid.newpage()
pushViewport(viewport(layout = grid.layout(1,3)))

print(eu3, vp=viewport(layout.pos.col = 1, layout.pos.row = 1))
print(ed3, vp=viewport(layout.pos.col = 2, layout.pos.row = 1))
print(eg3, vp=viewport(layout.pos.col = 3, layout.pos.row = 1))

Here is data link: 50 observations https://www.dropbox.com/s/6lrk4a5lo7l2nnj/regions_dist6a.csv?dl=0 这是数据链接:50个观察结果https://www.dropbox.com/s/6lrk4a5lo7l2nnj/regions_dist6a.csv?dl=0

Taking joran's suggestion into account, I came up with the following: 考虑到乔兰的建议,我提出了以下建议:

library(tidyverse)

#load dataset
regions_dist6 <- read.csv("test.csv")

#create category-value columns for the facet_grid
reg_melt <- regions_dist6 %>%
        gather(categ, categ_val, c("pop_density", "UTM44_Area_km2", "gdp_pc_inr"))
#create labels for facet_grid
xlabels <- c(pop_density = "log population density", UTM44_Area_km2 = "log road density", gdp_pc_inr = "log GDP") 


eu <- ggplot(reg_melt, aes(x=log(categ_val), y=log(ET_pc_y))) +
        #facet grid for the predefined categories with autoscaled x-axes
        facet_grid(cols = vars(categ), scales = "free_x", labeller = as_labeller(xlabels)) +
        geom_point(aes(colour = urb_lvl, size=car_dw_share),  alpha = 0.2) +
        scale_color_gradient(low="blue", high="red", name = "% Urbanization") + 
        geom_smooth(span = .95) + 
        ylab (bquote('log Commuting emissions ('*kgCO[2]/cap/year*')')) + 
        #remove automatic xlabel
        xlab (NULL) +
        labs(size = "% 4-Wheelers") + 
        theme_light()

x11(xpos = 50, ypos = 50)
print(eu)

Sample output with your data: 带有数据的示例输出: 在此处输入图片说明

Since I only started exploring R, you better carefully check, if this is what you had in mind. 由于我只是开始探索R,因此您最好仔细检查一下是否符合您的想法。 And I did not find a way to label the axes of a facet_grid individually (I just removed the common label for all three x-axes), so if someone more experienced comes up with a better solution, I am more than happy to vote for it. 而且我没有找到一种方法来单独标记facet_grid的轴(我只是删除了所有三个x轴的通用标签),因此,如果经验丰富的人提出了更好的解决方案,我很乐意投票赞成它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM