我使用直方图来绘制我的3组数据。但是,正如直方图所做的那样,它计算了每组有多少这些值(在x轴上),我想要的是这个值出现/出现的百分比(%)。
这是我生成的图,我使用这个常规代码绘制直方图:
ggplot2.histogram(data=dat, xName='dens',
groupName='lines', legendPosition="top",
alpha=0.1) +
labs(x="X", y="Count") +
theme(panel.border = element_rect(colour = "black"),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black")) +
theme_bw()+
theme(legend.title=element_blank())
任何想法/建议?
2条答案
按热度按时间ee7vknir1#
我们可以用
count
计算统计量的相对值来替换y美学,并设置比例来显示百分比:4xrmg8kj2#
如果我理解正确,那么
fill
会回答你的问题吗?比如说,
在这里,您不再有计数,但是对于沿着
x
轴的每个值,您有每个组的百分比(在这里:圆柱体)绘制。如果这不是您想要的,一般建议是先计算要绘制的数据,然后再绘制它。也就是说,许多人认为将计算/转换/聚合与绘图分开通常是明智的。
为了跟进我将计算与可视化分离的建议,让我们考虑
mtcars
数据集,并关注gear
和carb
。例如,您可以看到3个(32个中的)观测值具有
gear = 3, carb = 1
,这略小于10%。同样,4个观测值有gear = 4, carb = 1
,比10%多一点。让我们直接计算百分比:我在这里使用了
prop.table
,它也有一个margin参数。也就是说,如果你想知道条件百分比,你可以很容易地调整它(见下文)。不过,我们还是先讨论这个吧。假设我们想在计算完这些数字后将其可视化,我们可以简单地调用以下命令:这将给我们给予:
现在假设你想得到条件版本,例如。
注意每行的总和是如何为1的。这可以用同样的方式绘制:
请注意与以下方法生成的平滑版本的相似性: