小编Chi*_*ika的帖子

使用grid.arrange指定图的宽度和高度

我有三个图,我尝试将它们与grid.arrange结合起来.最后一个图的高度应小于前两个图,所有图的宽度应相同.

一个工作的例子:

p1 <- qplot(mpg, wt, data=mtcars)
p2 <- p1
p3 <- p1 + theme(axis.text.y=element_blank(), axis.title.y=element_blank())

grid.arrange(arrangeGrob(p1,p2, ncol=1, nrow=2),
         arrangeGrob(p3, ncol=1, nrow=1), heights=c(4,1)) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里,最后一个图的宽度大于前两个图.在我的真实数据中,即使我将文本和标题保留在y轴上,我仍然有第三个图的不同宽度.

我试图添加"宽度":

 grid.arrange(arrangeGrob(p1,p2, ncol=1, nrow=2),
         arrangeGrob(p3, ncol=1, nrow=1), heights=c(4,1), widths=c(2,1))
Run Code Online (Sandbox Code Playgroud)

但它变成了两列情节......

在此输入图像描述

我还尝试了另一个代码:

p1 <- ggplotGrob(p1)
p2 <- ggplotGrob(p2)
p3 <- ggplotGrob(p3)
# 
stripT <- subset(p2$layout, grepl("spacer", p2$layout$name))
p3 <- p3[-stripT$t, ]

grid.draw(rbind(p1, p2, p3, size = "first")) 
Run Code Online (Sandbox Code Playgroud)

我有相同的宽度,但现在我不知道如何改变高度......

在此输入图像描述

那么,有人可以帮助我将高度和宽度方面结合起来进行最终的情节吗?

plot r ggplot2 gridextra

38
推荐指数
2
解决办法
5万
查看次数

将R版本从3.0.3更新到3.1.2

我想用ubuntu从3.0.3到3.1.2更新R. 我正在研究Ubuntu 14.04LTS,64位.

我做了以下事情:

cd /etc/apt/
sudo gedit sources.list
Run Code Online (Sandbox Code Playgroud)

我添加了以下行:

deb http://cran.rstudio.com/bin/linux/ubuntu trusty/
Run Code Online (Sandbox Code Playgroud)

然后 :

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install r-base
Run Code Online (Sandbox Code Playgroud)

有些文件已上传.

然后我检查了R版本:

sudo R
version

platform       x86_64-unknown-linux-gnu    
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          0.3                         
year           2014                        
month          03                          
day            06                          
svn rev        65126                       
language       R                           
version.string R version 3.0.3 (2014-03-06)
nickname       Warm Puppy      
Run Code Online (Sandbox Code Playgroud)

我还有3.0.3版本,有人可以帮我升级到3.1.2吗?

编辑ECII:

sudo apt-get dist-upgrade

Reading package lists... Done
Building …
Run Code Online (Sandbox Code Playgroud)

install r version

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

从geom_tile中删除空行

我有一个包含5列的数据框:

N1 <- an integer between c(125,100,80,70,60,50,40,30,20)

N2 <- an integer between c(1,5,10,15,20,25,30,35,40,50,60,80,100)

Type <- Two different types

Rang <- a number

crit <- a character, only one value
Run Code Online (Sandbox Code Playgroud)

N1永远大于N2.这是我的数据框(Rang_final)的开头示例:

N1  N2     Type      rang     crit
125   1 SST-T_2m  41.86395 BE_proba
125   1 T_2m-SST 163.41217 BE_proba
100   1 SST-T_2m  32.88181 BE_proba
100   1 T_2m-SST 137.44479 BE_proba
 80   1 SST-T_2m  22.57176 BE_proba
 80   1 T_2m-SST 112.52334 BE_proba
 70   1 SST-T_2m  21.30066 BE_proba
 70   1 T_2m-SST  99.65523 BE_proba …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

将二维密度图与功能区结合起来

我有一个包含 20 个日期的数据框,每个日期有 50 个值。我正在尝试绘制这些值的二维密度图,该图保留在最小-最大带内。我想要的一个例子是:

在此输入图像描述

我知道如何绘制二维密度图以及丝带,但不知道如何将两者连接在一起。这是我的尝试:

require(ggplot2)
require(dplyr)
require(RColorBrewer)

set.seed(248)

##Create reproducible example
Chass <- data.frame(nb=rep(1:50, 10), x=rep(1:10, each=50), val=c(sample(seq(7,9,0.1), size=50, replace = T),
                                                                  sample(seq(17,19,0.1), size=50, replace = T),
                                                                  sample(seq(10,12,0.1), size=50, replace = T),
                                                                  sample(seq(7,10,0.1), size=50, replace = T),
                                                                  sample(seq(6,18,0.1), size=50, replace = T),
                                                                  sample(seq(5,11,0.1), size=50, replace = T),
                                                                  sample(seq(6,13,0.1), size=50, replace = T),
                                                                  sample(seq(2,7,0.1), size=50, replace = T),
                                                                  sample(seq(4,8,0.1), size=50, replace = T),
                                                                  sample(seq(3,16,0.1), size=50, replace = T)))

##Compute statistics for the ribbon
Chass_stats <- summarise(group_by(Chass, x), min=min(val, na.rm=T), …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 density-plot

6
推荐指数
0
解决办法
96
查看次数

将ff对象转换为data.frame

我正在处理大型矩阵和ff包。我正在加载一个ff对象,我想用它来计算crps(分数)。

例如,我有一个ff_matrix(称为Mat,具有25行和7303列),它是降水预测(7303代表天数(约20年),而25是一天的25次降水模拟)。我还有一个ff_array,其中包含这20年的观测值(称为Obs,具有7303值)。

使用ensembleBMA软件包,我想计算CRPS。我需要将ff_matrix和ff_array放在“ ensembleBMA”对象中(实际上这是一个data.frame)。

对于此代码:

ensembleBMA(Mat,Obs)
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coerce class 'c("ff_matrix", "ff_array", "ff")' into a data.frame
Run Code Online (Sandbox Code Playgroud)

我尝试了其他选项,例如:

as.data.frame(Mat)
as.matrix(Mat)
transform.ffdf(as.ffdf(Mat))
Run Code Online (Sandbox Code Playgroud)

我总是有这些错误:

Error in as.data.frame.default(Mat_Ptot_212_1) : cannot automatically convert class  'c("ff_matrix", "ff_array", "ff")' into a data frame (data.frame)
Run Code Online (Sandbox Code Playgroud)

要么

opening ff /tmp/RtmpWrlY4n/clone9d3376b435.ff Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,  : write error
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

r matrix bigdata dataframe ff

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

ggplot2用于离散比例的连续颜色并删除图例

我有以下数据框:

df
zone        X        Y   Value
   1   604000  2673000     522
   1   612000  2643000     524
   .        .        .       .
   .        .        .       .
 615   604000  2673000     698
Run Code Online (Sandbox Code Playgroud)

实际上我有615个区域,X和Y是Lambert坐标,Value是下雨.我的区域代表法国,我试图绘制它们:

mi <- 300
ma <- 1900

df$val <- cut(df$Sim, breaks=seq(mi,ma,100),
          labels = paste( "(", format(seq(mi,ma,100)[1:(length(seq(mi,ma,100))-1)]), 
                          ", ", format(seq(mi,ma,100)[-1]), "]", sep = ""))

breaks <- unique(bincol(df$Sim,"green","yellow","red"))
breaks <- breaks[order(unique(df$val))]

p <- ggplot(data =df, aes(x=X, y=Y))
p <- (p    
      + theme_bw()
      + coord_equal() 
      + geom_tile(aes(fill=val))
      + scale_colour_manual("mm", values = breaks)
      + geom_path(data = polfrance, colour …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

R Shiny - 使用 DataTable 移动列名称

我有一个非常复杂的闪亮代码,其中有几个面板和这些面板内的几个表格。启动应用程序时,列名称与列值正确对齐。但是,一旦我更改应用程序表格下的页码,列名称就会移动到左侧,而值仍保留在中间。如何强制应用程序使列名称与列值对齐?

\n

一个可重现的例子:

\n
library(shiny)\nlibrary(dplyr)\nlibrary(DT)\nlibrary(dplyr)\n\nui <- fluidPage(\n  \n  titlePanel("Test Example"), \n  \n  fluidRow(\n    column(3, align="left",\n           \n           # Input: Quantile ----\n           selectInput(inputId = "Variable",\n                       label = "Variable :",\n                       choices = c(80, 85, 90, 95),\n                       selected = 90)),\n    \n    column(9,\n           tabsetPanel(\n             tabPanel("Table d\'\xc3\xa9v\xc3\xa8nements", verticalLayout(p(dataTableOutput("cars.table")),\n                                                           p(dataTableOutput("cars.table2"))))))\n  )\n)\n\nserver <- function(input, output) {\n  output$cars.table <- DT::renderDataTable({\n    df <- summarise(group_by(cars, speed), n=mean(dist))\n    df\n  }, options=list(autoWidth = TRUE, scrollX=T, pageLength=5), rownames= FALSE)\n  \n  output$cars.table2 <- DT::renderDataTable({\n    df1 <- summarise(group_by(cars, speed), n=max(dist))\n    df1\n  }, options = list(autoWidth = …
Run Code Online (Sandbox Code Playgroud)

datatable r shiny dt

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

带有geom_tile的图中的多个图例

我有两个不同的数据框:P1和P2.这些数据帧中的每一个都有3个不同的列:N1,N2和值(mean_RMSE).N1和N2在15和120之间,对于线,N2总是低于N1.

如果我绘制P1,这就是我得到的:

p <- ggplot()
p <- (p
      + geom_tile(data=P1, aes(x=as.numeric(N1), y=as.numeric(N2), fill=mean_RMSE))
)
Run Code Online (Sandbox Code Playgroud)

P1

但我的目标是在同一块情节上绘制P1和P2:

p <- ggplot()
p <- (p
      + geom_tile(data=P1, aes(x=as.numeric(N1), y=as.numeric(N2), fill=mean_RMSE))
      + geom_tile(data=P2, aes(x=as.numeric(N2), y=as.numeric(N1), fill=mean_RMSE))
)
Run Code Online (Sandbox Code Playgroud)

P1_P2

我不知道如何改变P2的颜色.例如,我想要P1的蓝色范围和P2的红色范围,以便轻松区分P1和P2.

scale_fill_gradient改变了P1和P2的颜色(我仍然无法区分它们),如果我在geom_tile中添加"color",我会有两个不同的轮廓:

p <- ggplot()
p <- (p
      + geom_tile(data=psSST_T[[1]], aes(x=as.numeric(N1), y=as.numeric(N2), fill=mean_RMSE, colour="red"))
      + geom_tile(data=psT_SST[[1]], aes(x=as.numeric(N2), y=as.numeric(N1), fill=mean_RMSE, colour="blue")))
Run Code Online (Sandbox Code Playgroud)

轮廓

事实上,我想要P1和P2的两个不同的传说.

有人能帮我吗?

r ggplot2

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

标签 统计

r ×8

ggplot2 ×5

bigdata ×1

dataframe ×1

datatable ×1

density-plot ×1

dt ×1

ff ×1

gridextra ×1

install ×1

matrix ×1

plot ×1

shiny ×1

version ×1