我有下面的数据集,它基本上是一个3列的数据框架
column_A <- rep(sample(300:1000000, 903, replace = F), each=10)
column_B <- sample(5:25, 9030, replace = T)
df <- data.frame(column_A, column_B)
df$group <- sample(1:4, nrow(df), replace = T)
rm(column_A)
rm(column_B)
我想使用geom.point()生成一个图,使用以下代码:
graph_builder <- function(data_set, y_axis_parameter, category, group) {
graph <- ggplot(data_set, aes(x = factor({{category}}), y = {{ y_axis_parameter }})) +
geom_point() +
theme(plot.title = element_text(hjust = 0.5)) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
facet_grid(rows = vars({{ group }}), scales = "free_x")
graph
}
graph_builder(df, column_B, column_A, group )
使用我的真实的数据集,类似于生成的数据框,我正在处理x轴的大量类别(接近900个),因此x轴上的值变得拥挤且不可读。我想让我的图表更具可读性。
**我的解决方案:**我正在向数据框添加一个名为“group”的新列,并分配数值,从1到4。这将大致相等数量的数据点分配给这四个组(1,2,3和4)中的每一个。但正如您在代码中看到的,我添加了这个新列,它在grpah_builder()函数之外分配分组。
我认为一定有更好的方法将我的矩阵划分为4个(或5个)子组,以这种方式,最终的图有4个子图。我应该提到的是,在我的真实的 Dataframe 中,x轴上的值并不遵循均匀分布,这使得在使用cut()
函数时组大小不同。Look at this solution
**问题1:**有没有一种方法可以在graph_builder()函数中划分数据集?正如你所看到的,我的代码生成的图形是不可读的,任何使它更具可读性的解决方案都是值得赞赏的。
1条答案
按热度按时间2w3rbyxf1#
你在问你的x轴的英雄主义。这里有一个版本,我已经分裂成6个方面的类别值的顺序图表。这只是勉强可读,但它不是很明显,我可以做得更好,没有一个更大的格式。也许IMAX?
在这里,我将类别转换为因子,并将其转换为数字,因此
num_cat
的范围将从第一个column_A
值的1到最后一个值的903。然后我们就可以用一点数学来平均地分组。