R 如何获得冲积或sankey地块中y轴上的百分比?

R 如何获得冲积或sankey地块中y轴上的百分比?,r,ggplot2,ggalluvial,R,Ggplot2,Ggalluvial,我使用ggplot2实现了这个图形,我想将y轴更改为百分比,从0%更改为100%,每10次中断一次。 我知道我可以使用: + scale_y_continuous(label=percent, breaks = seq(0,1,.1)) 但我还是遇到了一个问题,因为,将其转化为百分比,R将30000解释为30000%,所以如果限制为100%,我在图表中什么也得不到。 我怎么办 我有这样一个数据集: ID time value 1 1 B with G available 2 1

我使用ggplot2实现了这个图形,我想将y轴更改为百分比,从0%更改为100%,每10次中断一次。 我知道我可以使用:

+ scale_y_continuous(label=percent, breaks = seq(0,1,.1))
但我还是遇到了一个问题,因为,将其转化为百分比,R将30000解释为30000%,所以如果限制为100%,我在图表中什么也得不到。 我怎么办

我有这样一个数据集:

ID time value
1   1   B with G available
2   1   Generic
3   1   B with G available
4   1   Generic
5   1   B with G available
6   1   Generic
7   1   Generic
8   1   Generic
9   1   B with G available
10  1   B with G available
11  1   Generic
12  1   B with G available
13  1   B with G available
14  1   B with G available
15  1   Generic
16  1   B with G available
17  1   B with G available
18  1   B with G available
19  1   B with G available
20  1   B with G available
1   2   B with G available
2   2   Generic
3   2   B with G available
4   2   Generic
5   2   B with G available
6   2   Generic
7   2   Generic
8   2   Generic
9   2   B with G available
10  2   B with G available
11  2   Generic
12  2   B with G available
13  2   B with G available
14  2   B with G available
15  2   Generic
16  2   B with G available
17  2   switch
18  2   B with G available
19  2   B with G available
20  2   switch
该代码可复制:

PIPPO <- data.frame("ID"=rep(c(1:20),2), "time"=c(rep(1,20),rep(2,20)), "value"=c("B","G","B","G","B",rep("G",3),rep("B",2),"G",rep("B",3),"G",rep("B",6),"G","B","G","B",rep("G",3),rep("B",2),"G",rep("B",3),"G","B","switch",rep("B",2),"switch"))

有人能帮我吗

我使用

scale_y_continuous(label = scales::percent_format(scale = 100 / n_id))
这是:

最大值为84%(而不是100%)。如何使y轴达到100%并每10%断开一次

这是我得到的

scale_y_continuous(breaks = scales::pretty_breaks(10), label = scales::percent_format(scale = 100 / n_id))


我每14%就得到一个奇怪的值。

我假设您需要创建一个新的百分比列,方法是获取行的总数,然后将列中的每个“值”除以总数,以得到它所代表的百分比。

简单地将y值归一化似乎就可以做到这一点:

库(ggplot2)
ggplot(平均车流量,平均排气量(x=气缸,y=英里/最大英里/加仑)))+
几何点()+
比例是连续的(标签=比例::标签百分比()


由(v0.3.0)于2020-05-19使用
百分比格式中的
比例
参数创建,可以这样实现:


PIPPO谢谢。我想得到的是y轴每10%断裂一次,直到100%。我怎么做?在这种情况下,你必须设置休息。尝试
scale\u y\u continuous(breaks=scales::pretty\u breaks(10),label=scales::percent\u format(scale=100/n\u id))
。我将编辑我的问题,添加使用“break”得到的结果。您好@sabriang。很明显,规范化过程中发生了一些奇怪的事情。似乎是
n_id
略大于绘图中使用的OB数的情况。(?)但如果不看真实数据,这是很难解决的。要获得好的中断,您可以尝试通过
breaks=seq(0,n\u id,length.out=11)
设置中断。然而,这可能(或者说很简单)并不能解决这个问题。对于y轴上的绝对值,我得到了以下结果:10.000、20.000和30.000。当我把y轴变成百分比时,我得到了:28%,56%和84%,考虑到观察的总数是35.514。当我使用“breaks”时,它会继续绘制这些百分比,并在两者之间添加其他百分比。我不明白为什么。无论如何谢谢你
scale_y_continuous(breaks = scales::pretty_breaks(10), label = scales::percent_format(scale = 100 / n_id))