我正在努力复制使用R/ggplot2this个优秀演示的各个方面.

对于第一个点(绘制不同的bin计数),我处理得很好,但是当对第二个点(不同的最大值)复制这种方法时,它奇怪地失败了,我不知道为什么.

以下是我在上面的2.篇帖子中指出的健壮性不足的证明:

library(dplyr)
library(ggplot2)
library(magrittr)
requireNamespace("kmed")

# Define the new maxima to be used
maxima <- c(197, 202, 213, 224)

# Replicate the UCI heart data set
m_df <- bind_rows(
  replicate(length(maxima), kmed::heart, simplify = FALSE)) %>%
  dplyr::mutate(
    sm  = rep(maxima, each = nrow(kmed::heart)),
    fsm = paste("Maximum Edited to:", rep(maxima, each = nrow(kmed::heart))))

# Modify the maxima
m_df[which(m_df$thalach == max(m_df$thalach)), "thalach"] <- maxima

# Generate individual geom_histogram layers, forcing identical number of bins
m_lp_hist <- plyr::llply(maxima, function(b) {
  geom_histogram(
    data    = m_df %>% filter(sm == b),
    mapping = aes(x = thalach),
    bins    = 20)
  })

# Combine the layers
m_p_hist <- Reduce("+", m_lp_hist, init = ggplot2::ggplot())
m_p_hist +
  ggplot2::facet_wrap(. ~ fsm, scales = "free_y") +
  ggplot2::theme_bw() +
  ggplot2::labs(x = "Maximum Heart Rate Achieved", y = "Count")

当判断结果图时,直方图非常相似(!),而单步执行使用ggplot() + m_p_list[[1]]等生成的各个层很好地显示了层之间的差异,从而显示了我想要演示的效果(直方图缺乏健壮性).这是怎么回事!?

谢谢你的指点

推荐答案

你离你想要的(我认为的)很近.试着这样做:

m_p_hist +
  ggplot2::facet_wrap(. ~ fsm, scales = "free") + # instead of free_y
  ggplot2::theme_bw() +
  ggplot2::labs(x = "Maximum Heart Rate Achieved", y = "Count")

result

解释

您的原始代码将所有4个直方图层添加到单个GigPlot对象中,然后再将它们分成4个单独的绘图面板,without allowing x-axis scales to vary across facets.个.因此,x轴范围/限制是根据所有4个层的组合数据计算的,每个直方图的20个柱状图是从相同的范围计算出来的.

通过将scales = "free_y"更改为scales = "free",我们允许x轴比例变化,每个直方图的20个柱状图是从不同的值范围计算出来的.

顺便说一句,我不太清楚你为什么要通过facet_wrap来创建它.我会创建4个独立的ggPlot对象,然后将它们缝合到一个单独的图表中用于演示,这样就可以完全避免上述问题.例如:

lapply(m_lp_hist, 
       function(p) ggplot() + 
         p + 
         labs(title = p$data$fsm[[1]]) +
         theme_bw()) %>%
  cowplot::plot_grid(plotlist = ., nrow = 2, ncol = 2)

R相关问答推荐

通过Plotly绘制线串几何形状的3D图

IQR()和stats之间四分位距计算的差异::分位数()在R和' ggpubr '

使用格式化程序自定义hc_tooltip以添加textColor删除了我的标记并try 将它们带回失败

从R中的另一个包扩展S3类的正确方法是什么

在特定列上滞后n行,同时扩展框架的长度

derrr summarise每个组返回多行?

为什么舍入POSIXct会更改能力以匹配等效的POSIXct?

如何在ggplot图中找到第二轴的比例

如果可能,将数字列转换为整数,否则保留为数字

传递ggplot2的变量作为函数参数—没有映射级别以正确填充美学

TreeNode打印 twig 并为其上色

按时间顺序对不同事件进行分组

R -使用矩阵reshape 列表

我们如何在R中透视数据并在之后添加计算

我如何使用tidyselect来传递一个符号数组,比如Pivot_Long?

在生成打印的自定义函数中,可以通过变量将线型或 colored颜色 设置为NULL吗?

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?

将边列表转换为路径长度列表

将仪表板中的值框大小更改为Quarto

如何为包创建自定义roxygen2标签?