小编Mas*_*013的帖子

ggplot2中具有可变大小binwidth的直方图

我有以下数据

 dati <- read.table(text="
        class     num
    1     0.0   63530
    2     2.5   27061
    3     3.5   29938
    4     4.5   33076
    5     5.6   45759
    6     6.5   72794
    7     8.0  153177
    8    10.8  362124
    9    13.5  551051
    10   15.5  198634
  ")
Run Code Online (Sandbox Code Playgroud)

我想生成一个具有可变大小区间的直方图,以便每个条形区域反映每个区间的总数(num).我试过了

bins <- c(0,4,8,11,16)
p <- ggplot(dati) +
  geom_histogram(aes(x=class,weight=num),breaks = bins)
Run Code Online (Sandbox Code Playgroud)

然而,这产生直方图,其中每个条的长度等于每个箱的总数.因为箱宽度是可变的,所以区域与数量不成比例.我无法在ggplot2中解决这个明显容易出问题的问题.谁能帮我?

r histogram ggplot2

6
推荐指数
1
解决办法
6806
查看次数

在图例项之间添加水平空间

ggplot2在两行的图表底部有一个图例.我需要增加项目之间的水平空间.

目前代码是:

p + theme(legend.key = element_blank(), 
       legend.position = "bottom", 
       legend.title = element_blank(),
       legend.direction = "horizontal") + 
    guides(linetype = guide_legend(ncol = 3,keywidth=4))
Run Code Online (Sandbox Code Playgroud)

但结果项目太近了: 在此输入图像描述

有什么建议吗?

r ggplot2

4
推荐指数
1
解决办法
3716
查看次数

使用 %&gt;% 管道中的拆分将数据框转换为列表列表

我想将数据框转换为列表列表,如下例所示:

 df <- data.frame(var1=c("A","A","A","B","B","C"),var2=seq(1,6))

 >   var1 var2
 1    A    1
 2    A    2
 3    A    3
 4    B    4
 5    B    5
 6    C    6

 split(df$var2,df$var1)

 $A
 [1] 1 2 3

 $B
 [1] 4 5

 $C
 [1] 6
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否可以使用%>%管道来完成此操作。我不知道如何split在管道中使用,其中df作为输入给出。或者也许还有另一种方法。

r dplyr magrittr

2
推荐指数
2
解决办法
367
查看次数

无法根据需要订购填充颜色

我需要使用两个单独的 geom_area 命令生成一个图,以便在零线上方绘制一些时间序列,在零线下方绘制一些时间序列。这是一个简单的例子:

library("reshape2")
library("ggplot2")

d <- as.data.frame(t(read.table(sep=";",header=F,row.names=1,text="
year;1999;2000;2001;2002;2003;2004;2005;2006;2007;2008;2009;2010;2011;2012
primary balance;-5.63;-11.88;-15.37;-18.3;-20.09;-21.45;-21.87;-23.25;-26.98;-29.56;-28.92;-28.46;-29.64;-32.61
snow-ball effect;1.61;0.81;2.67;4.99;7.23;8.02;9.45;9.6;11.01;14.06;22.81;24.41;25.76;26.89
adjustment;2.83;5.38;6.52;3.93;2.28;2.45;3.94;5.28;4.5;6.73;6.94;7.59;7.73;8.07")))
dd <- melt(d,id.vars="year")
dd1 <- subset(dd,variable=="primary balance")
dd2 <- subset(dd,variable!="primary balance")
ggplot()+
  geom_area(data=dd1,aes(x=year,y=value,fill=variable,order=variable),alpha=.5)+
  geom_area(data=dd2,aes(x=year,y=value,fill=variable,order=variable),alpha=.5)
Run Code Online (Sandbox Code Playgroud)

情节是: 阴谋

虽然变量级别的顺序是:(1)“主要平衡”,(2)“雪球效应”和(3)“调整”,但现在我可以告诉 ggplot 分配颜色并将项目放入图例以正确的顺序排列。

r ggplot2

1
推荐指数
1
解决办法
1827
查看次数

标签 统计

r ×4

ggplot2 ×3

dplyr ×1

histogram ×1

magrittr ×1