网格在 ggplot2 中排列并修复变量名称的 ylabs
Grid arrange in ggplot2 and fix ylabs for variable name
我正在使用 ggplot2 绘制所有变量,y 轴标签是变量名称。然后我在网格上排列 ggplot 图。
生成的最终图包含所有较小的图,最终图对象被复制。我也希望正确命名 y 轴标签。
下面是我为此目的使用的代码。
require(ggplot2)
require(gridExtra)
data(iris)
plots = list()
for(i in 1:4){
grf = qplot(x = 1:nrow(iris), y = iris[ ,i],
color = iris$Species, ylabs = colnames(iris)[i])
plots = c(plots, list(grf))
}
do.call(grid.arrange, plots)
我在角落里谦卑地鞠躬,热切地等待着比我聪明得多的社区的回应。
编辑:忘记提及我需要使用 ggsave
保存列表中的地块
我认为这就是您要的...
请注意,您必须使用 aes_string() 函数才能使图表正确显示
plots = list()
cols_to_plot <- colnames(iris)
for(i in 1:4){
grf = ggplot(data = iris, aes_string(x = "1:nrow(iris)", y = cols_to_plot[i], color = "Species")) +
geom_point() +
ylab(colnames(iris)[i])
plots = c(plots, list(grf))
}
do.call(grid.arrange, plots)
产生以下内容:
GGplot2 有一些非常棒的功能 (facet_wrap
),可以做一些您似乎正在尝试的相同事情。您需要正确安排数据以利用它(想想 "long & skinny data")。
tidyr
以一种可以被 ggplot2
和 ggvis
包轻松接受的方式很好地塑造数据。
这是它显示的内容...
require(ggplot2)
require(tidyr) # to reshape the data
require(dplyr) # to add the column of rownumbers. not really necessary at all
iris %>%
mutate(rowNum = 1:nrow(.)) %>% #add the column of row numbers
gather(Measure, Value, -(Species:rowNum)) %>% #from tidyr package - this is what makes it long. Read the help on `gather` and `spread`
ggplot(aes(x = rowNum, y = Value, group = Species, color = Species)) +
geom_point() +
facet_wrap(~Measure, nrow = 2) # the nice n' easy part. Automatically plops it in your four separate charts based on the "Measure" variable (which was created when I made the data "long" instead of "wide").
我正在使用 ggplot2 绘制所有变量,y 轴标签是变量名称。然后我在网格上排列 ggplot 图。
生成的最终图包含所有较小的图,最终图对象被复制。我也希望正确命名 y 轴标签。
下面是我为此目的使用的代码。
require(ggplot2)
require(gridExtra)
data(iris)
plots = list()
for(i in 1:4){
grf = qplot(x = 1:nrow(iris), y = iris[ ,i],
color = iris$Species, ylabs = colnames(iris)[i])
plots = c(plots, list(grf))
}
do.call(grid.arrange, plots)
我在角落里谦卑地鞠躬,热切地等待着比我聪明得多的社区的回应。
编辑:忘记提及我需要使用 ggsave
我认为这就是您要的... 请注意,您必须使用 aes_string() 函数才能使图表正确显示
plots = list()
cols_to_plot <- colnames(iris)
for(i in 1:4){
grf = ggplot(data = iris, aes_string(x = "1:nrow(iris)", y = cols_to_plot[i], color = "Species")) +
geom_point() +
ylab(colnames(iris)[i])
plots = c(plots, list(grf))
}
do.call(grid.arrange, plots)
产生以下内容:
GGplot2 有一些非常棒的功能 (facet_wrap
),可以做一些您似乎正在尝试的相同事情。您需要正确安排数据以利用它(想想 "long & skinny data")。
tidyr
以一种可以被 ggplot2
和 ggvis
包轻松接受的方式很好地塑造数据。
这是它显示的内容...
require(ggplot2)
require(tidyr) # to reshape the data
require(dplyr) # to add the column of rownumbers. not really necessary at all
iris %>%
mutate(rowNum = 1:nrow(.)) %>% #add the column of row numbers
gather(Measure, Value, -(Species:rowNum)) %>% #from tidyr package - this is what makes it long. Read the help on `gather` and `spread`
ggplot(aes(x = rowNum, y = Value, group = Species, color = Species)) +
geom_point() +
facet_wrap(~Measure, nrow = 2) # the nice n' easy part. Automatically plops it in your four separate charts based on the "Measure" variable (which was created when I made the data "long" instead of "wide").