小编Sim*_*lon的帖子

在同一ggplot中绘制离散和连续的比例

我想使用ggplot2绘制一些不同的数据项,使用两个不同的色标(一个连续和一个离散来自两个不同的df).我可以准确地描绘出我个人喜欢的方式,但我不能让它们一起工作.看起来你不能在同一个情节中运行两种不同的色标吗?我在这里这里看到过类似的问题,这让我相信我想要实现的目标在ggplot2中是不可能的,但是如果我错了,我想说明我的问题,看看是否有变通.

我有一些GIS流数据,附有一些分类属性,我可以绘制(p1在下面的代码中)以获得: 在此输入图像描述

我还有一组具有连续响应的位置,我也可以绘制(p2在下面的代码中)以获得: 在此输入图像描述 但是我无法将两者结合起来(p3在下面的代码中).我收到这个错误

比例误差[[prev_aes]]:尝试选择少于一个元素

注释掉该行scale_colour_hue("Strahler order") +会将错误更改为

错误:提供给连续刻度的离散值

基本上似乎ggplot2对geom_path呼叫和geom_point呼叫使用相同的比例类型(连续或离散).因此,当我将离散变量传递 factor(Strahler)scale_colour_gradientn比例时,绘图失败.

有没有解决的办法?如果有data一个scale函数的参数告诉它应该映射或设置属性,那将是惊人的.这甚至可能吗?

非常感谢和可重现的代码如下:

library(ggplot2)

### Download df's   ###
oldwd <- getwd(); tmp <- tempdir(); setwd(tmp)
url <- "http://dl.dropbox.com/u/44829974/Data.zip"
f <- paste(tmp,"\\tmp.zip",sep="")
download.file(url,f)
unzip(f)


### Read in data    ###
riv_df <- read.table("riv_df.csv", sep=",",h=T)
afr_df <- read.table("afr_df.csv", sep=",",h=T)
vil_df <- read.table("vil_df.csv", sep=",",h=T)


### Min and max for plot area   ###
xmin …
Run Code Online (Sandbox Code Playgroud)

gis graphics r ggplot2

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

R,基于方差截止的滤波器矩阵

请参阅下面的编辑 使用R,我想过滤矩阵(基因表达数据)并仅保留具有高方差值的行(基因/探针).例如,我只想保留具有底部和顶部百分位数值的行(例如,低于20%且高于80%).我想将我的研究仅限于下游分析的高变异基因.R中有基因过滤的常用方法吗?

我的矩阵有18个样本(列)和47000个探针(行),其值为log2变换和标准化.我知道该quantile()功能可以识别每个样品列中的20%和80%截止值.我无法弄清楚如何为整个矩阵找到这些值,然后将原始矩阵子集化以删除所有"非变化"行.

示例矩阵的平均值为5.97,因此最后三行应该被删除,因为它们包含20%和80%截止值之间的值:

> m

                sample1 sample2 sample3 sample4 sample5 sample6
ILMN_1762337    7.86    5.05    4.89    5.74    6.78    6.41
ILMN_2055271    5.72    4.29    4.64    5.00    6.30    8.02
ILMN_1736007    3.82    6.48    6.06    7.13    8.20    4.06
ILMN_2383229    6.34    4.34    6.12    6.83    4.82    5.57
ILMN_1806310    6.15    6.37    5.54    5.22    4.59    6.28
ILMN_1653355    7.01    4.73    6.62    6.27    4.77    6.12
ILMN_1705025    6.09    6.68    6.80    6.85    8.35    4.15
ILMN_1814316    5.77    5.17    5.94    6.51    7.12    7.20
ILMN_1814317    5.97    5.97    5.97    5.97    5.97    5.97
ILMN_1814318    5.97    5.97 …
Run Code Online (Sandbox Code Playgroud)

r subset variance quantile

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

将ggplot2 colourbar刻度线更改为黑色

在我的一些情节中,我发现很难看到颜色条中的刻度线.我无法找到改变蜱虫颜色的文件化方法.所有示例似乎都专注于更改标签或根本不绘制刻度.可能吗?

#  Data
require(ggplot2)
require(grid)
n <- 100
x <- y <- seq(-4*pi, 4*pi, len=n)
r <- cos( sqrt( outer(x^2, y^2, "+") ) ^ 2 )
df <- data.frame( x = rep( x , each = n) , y = rep( y , times = n ) , val = c(r) )

#  Plot
ggplot( df , aes( x , y , fill = val ) )+
  geom_raster()+
  scale_fill_gradient( low = "#FFFFFF" , high = "#de2d26" )+
  guides( fill = …
Run Code Online (Sandbox Code Playgroud)

graphics plot r ggplot2

9
推荐指数
3
解决办法
1579
查看次数

在plotmath表达式中包含文本控制字符

有没有办法获取文本字符串的控制字符,例如在plotmath表达式中"\n"进行newline评估,反之亦然.在下面的例子中,我想结合:

  • 一些字符文字
  • 文本控制字符(换行符)
  • 替换变量名称
  • 包括plotmath表达式

在阅读完这个问题之后,我可以通过替代来获得大部分内容,但newline不会对角色进行评估.现在我转圈圈,并用自己的困惑plotmath,parse,bquotesubstitute.在plotmath 的帮助页面中,它说

与普通绘图不同,控制字符(例如\n)不会在plotmath中的字符串中解释.

这是否意味着它真的不可能?

lab = "some data"
form = "Exponential"
x = 1:10
y = x^2


plot( x , y , type = "b" )
title( main = substitute( paste( "Plot of " , phi , " of: "  , lab , "\nFunctional form: " , form ) , list(lab = lab , form = form …
Run Code Online (Sandbox Code Playgroud)

graphics plot expression r plotmath

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

在plotmath表达式中粘贴一个特殊参数?

在为plotmath情节标题提供表达时,我觉得它的paste效果就像paste,但现在我不确定.它是plotmath函数的特殊参数吗?在plotmath paste()行为就像paste0()paste0被直接引用,而sep的论点paste()被忽略,但在表达没有报价.怎么paste()解释?请参阅以下四个示例:

#  Data to plot
x <- seq( 55 , 70 , length = 2001 )
probs <- dexp( x , rate = 5 / 60  )
s <- sample( x , 10000 , prob = probs , repl = TRUE )


#  Some plots
par(mfrow = c(2,2) )
#1)  paste() behaves like paste0() here
hist( s , breaks = …
Run Code Online (Sandbox Code Playgroud)

syntax graphics plot r plotmath

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

R:应用中的rownames,colnames,dimnames和names

我想使用apply来遍历矩阵的行,我想在我的函数中使用当前行的rowname.看来你不能使用rownames,colnames,dimnamesnames直接在函数内部.我知道我可能会根据此问题中的信息创建一个解决方法.

但我的问题是如何apply在它的第一个参数中处理数组的行名和列名,以及在函数内部创建的对象的名称赋值apply?它看起来有点不一致,我希望通过以下示例来展示.有没有理由为它设计这样的?

# Toy data
m <- matrix( runif(9) , nrow = 3 )
rownames(m) <- LETTERS[1:3]
colnames(m) <- letters[1:3]
m
          a         b           c
A 0.5092062 0.3786139 0.120436569
B 0.7563015 0.7127949 0.003358308
C 0.8794197 0.3059068 0.985197273

# These return NULL
apply( m , 1 , FUN = function(x){ rownames(x) } )
NULL
apply( m , 1 , FUN = function(x){ colnames(x) } )
NULL
apply( m …
Run Code Online (Sandbox Code Playgroud)

r function base apply

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

从多个连接向单个文件追加文本的最有效方法是什么

我已经看到了很多关于写入文件的问题,但我想知道打开文本文件最有效的方法是什么,附加一些数据然后在你要从多个连接写入时再次关闭它(即并行计算情况),并不能保证每个连接何时都要写入文件.

例如,在下面的玩具示例中,它只使用我桌面上的核心,它似乎工作正常,但我想知道如果写入时间越长并且写入文件的进程数量增加,此方法是否容易失败(特别是在可能存在延迟的网络共享中).

任何人都可以建议一种强大的,明确的方式,当可能有其他想要同时写入文件的从属进程时,应该打开,写入然后关闭连接吗?

require(doParallel)
require(doRNG)

ncores <- 7
cl <- makeCluster( ncores , outfile = "" )
registerDoParallel( cl )

res <- foreach( j = 1:100 , .verbose = TRUE , .inorder= FALSE ) %dorng%{
    d <- matrix( rnorm( 1e3 , j ) , nrow = 1 )
    conn <- file( "~/output.txt" , open = "a" )
    write.table( d , conn , append = TRUE , col.names = FALSE )
    close( conn )
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找最好的 …

parallel-processing foreach file-io r

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

堆积光栅在循环中

我需要在循环中堆叠一些栅格,如:

for(month in 1:12){
.
.
.
"some algorithm spiting out a raster called 'sm_esa'"
sm_esa_stack<-stack(sm_esa)
}
Run Code Online (Sandbox Code Playgroud)

最后,我想创建一个包含12层(每层一个月)的堆栈.但是我的最后一行显然会覆盖每一个新的栅格而不是叠加.任何提示?

stack r raster

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

如何在一个字符串中删除特殊字符,空格和修剪R中的字符变量

我在R中遇到一个带有字符类型变量的问题.我在数据框中的变量有这样的结构:

X1
ANGLO AUTOMOTRIZ S.A. MATRIZ
AUTOMOTORES Y ANEXOS / AYASA
ECUA - AUTO S.A. MATRIZ
METROCAR S.A. 10 DE AGOSTO
MOSUMI LA "Y"
Run Code Online (Sandbox Code Playgroud)

我的问题是我想要一个没有的新变量./-"",字符串必须组成一个没有空格,如下所示:

X2
ANGLOAUTOMOTRIZSAMATRIZ
AUTOMOTORESYANEXOSAYASA
ECUAAUTOSAMATRIZ
METROCARSA10DEAGOSTO
MOSUMILAY
Run Code Online (Sandbox Code Playgroud)

可以在R中做到这一点.谢谢.

regex r

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

如何引用不属于SD的lapply列?

我在我的列中data.table包含了我想用来更新一堆其他列的数据.这个数据是一个列表,我需要根据我将在SD表达式中包含的每个列中的值对列表进行子集化

我的数据......

dt <- data.table( A = list( c("X","Y") , c("J","K") ) , B = c(1,2) , C = c(2,1) )
#     A B C
#1: X,Y 1 2
#2: J,K 2 1
Run Code Online (Sandbox Code Playgroud)

我想要的结果....

#     A B C
#1: X,Y X Y
#2: J,K K J
Run Code Online (Sandbox Code Playgroud)

我试过的......

# Column A is not included in SD so not found...
dt[ , lapply( .SD , function(x) A[x] ) , .SDcols = 2:3 ]
#Error in FUN(X[[1L]], ...) : object 'A' …
Run Code Online (Sandbox Code Playgroud)

r data.table

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