如何绘制二项式矩阵中1的频率直方图(X轴为矩阵列)
解决方案
hist(Infected)会把矩阵所有元素当成单一向量统计,自然无法体现列维度的信息。要实现按列展示1的频率,需要先按列计算1的频率,再用合适的绘图函数呈现:
步骤1:计算每列中1的频率
# 你的原矩阵生成代码 prevalence <- 0.01 Infected <- sapply(1:10, function(p) rbinom(500, 1, prevalence)) # 计算每列中1的频率(占该列总样本数的比例) col_freq <- colSums(Infected) / nrow(Infected) # 若需要统计1的个数而非频率,用这行替代: # col_count <- colSums(Infected)
步骤2:绘制按列分布的频率图
由于X轴是离散的列编号,用barplot比hist更贴合需求:
barplot(col_freq, names.arg = 1:ncol(Infected), # 设置X轴标签为列1到列10 xlab = "矩阵列", ylab = "1的频率", main = "各列中1的频率分布")
如果坚持要用hist(虽不适合离散轴场景),可以将列编号与对应频率组合后绘制:
# 转换为数据框 freq_df <- data.frame(col = 1:ncol(Infected), freq = col_freq) # 绘制直方图(以频率为统计对象,展示不同频率对应的列数量) hist(freq_df$freq, breaks = seq(0, max(freq_df$freq)+0.001, by=0.001), xlab = "1的频率", ylab = "列的数量", main = "各列1的频率分布直方图")
内容的提问来源于stack exchange,提问作者Katy Baker
相关产品推荐
相关产品推荐

