我想在循环中向列表添加元素(我不确切知道多少)
像这样:
l <- list();
while(...)
l <- new_element(...);
Run Code Online (Sandbox Code Playgroud)
最后,l[1]
将是我的第一个元素,l[2]
我的第二个元素,依此类推.
你知道怎么办吗?
我尝试通过执行以下操作将字体更改为10为我的条形图的标签ggplot2
:
ggplot(data=file,aes(x=V1,y=V3,fill=V2)) +
geom_bar(stat="identity",position="dodge",colour="white") +
geom_text(aes(label=V2),position=position_dodge(width=0.9),
hjust=1.5,colour="white") +
theme_bw()+theme(element_text(size=10))
ggsave(filename="barplot.pdf",width=4,height=4)
Run Code Online (Sandbox Code Playgroud)
但是生成的图像具有超大字体大小的条形图标签.
然后我想到geom_text()
用这个修改:
geom_text(size=10,aes(label=V2),position=position_dodge(width=0.9),
hjust=1.5,colour="white")
Run Code Online (Sandbox Code Playgroud)
标签字体更大......
我可以将内部的大小更改为geom_text
3,现在看起来像字体10,类似于轴标签.
我想知道发生了什么事?确实theme(text=element_text(size=10))
并不适用于标签?
为什么10英寸的尺寸geom_text()
不同于theme(text=element_text())
?
我试图在R 3.3上安装名为"rgeos"的软件包,但是当我输入时
install.packages("rgeos")
Run Code Online (Sandbox Code Playgroud)
但它返回以下错误(与其他包相同,但不是所有包):
> * installing *source* package ‘rgeos’ ...
** package ‘rgeos’ successfully unpacked and MD5 sums checked
configure: CC: gcc
configure: CXX: g++
configure: rgeos: 0.3-19
checking for /usr/bin/svnversion... no
configure: svn revision: 524
checking for geos-config... no
no
configure: error: geos-config not found or not executable.
ERROR: configuration failed for package ‘rgeos’
* removing ‘/home/kdg/R/x86_64-pc-linux-gnu-library/3.3/rgeos’
>
> The downloaded source packages are in
> ‘/tmp/Rtmpsa5pDo/downloaded_packages’ Warning message: In
> install.packages("rgeos") : installation of package ‘rgeos’ had …
Run Code Online (Sandbox Code Playgroud) 我必须每天生成一个甘特图.我的想法是使用R的DiagrammeR包中包含的美人鱼api.
我的数据总是具有相同的结构,因此,我创建了一个非常原始的解析器,它包含在可重现的示例中.
我面临的问题是,在4个部分后,样式从零开始:
rect.section.section0
rect.section.section1
rect.section.section2
rect.section.section3
rect.section.section0
Run Code Online (Sandbox Code Playgroud)
我可以改变rect.section.sectionx
.css的颜色,但我不能添加新颜色.
有没有办法改变/个性化该部分的颜色/样式?
我可R
重复的例子:
library(DiagrammeR)
library(htmltools)
fromdftogantt<-function(df,Title="Proba",filename="proba.html"){
txt<-paste("gantt","dateFormat YYYY-MM-DD",paste("title",Title),"",sep="\n")
for(i in unique(df$section)){
txt<-paste(txt,paste("section",i),sep="\n")
for(j in which(df$section==i)){
txt<-paste(txt,paste0(df$name[j],":",df$status[j],",",
df$fecini[j],",",
df$fecfin[j]),sep="\n")
}
txt<-paste0(txt,"\n")
}
m<-mermaid(txt)
m$x$config = list(ganttConfig = list(
axisFormatter = list(list(
"%m-%Y"
,htmlwidgets::JS(
'function(d){ return d.getDate() == 1 }'
)
))
))
save_html(as.tags(m),file=filename)
}
df<-data.frame(section=letters[1:6],name=paste("Name",1:6),
status=rep("active",6),
fecini=as.Date(c("2015-02-03","2015-03-05","2015-04-07",
"2015-02-03","2015-03-05","2015-04-07")),
fecfin=as.Date(c("2015-06-01","2015-04-30","2015-12-31",
"2015-06-01","2015-04-30","2015-12-31")),
stringsAsFactors = FALSE)
fromdftogantt(df,Title="Proba",filename="proba.html")
Run Code Online (Sandbox Code Playgroud) 我想生成一个图,描绘我工作的有机体的14个线性染色体,用于在每条染色体上的特定位置用彩色条进行扩展.理想情况下,我想使用R,因为这是我遇到的唯一编程语言.
我已经探索了各种方法,例如使用GenomeGraphs,但我发现这比我想要的更复杂/显示比我所拥有的更多的数据(例如显示细胞质带)并且通常特异于人类染色体.
我基本上想要的是14个以下尺寸的灰色条:
chromosome size
1 640851
2 947102
3 1067971
4 1200490
5 1343557
6 1418242
7 1445207
8 1472805
9 1541735
10 1687656
11 2038340
12 2271494
13 2925236
14 3291936
Run Code Online (Sandbox Code Playgroud)
然后用彩色标记描绘沿染色体长度散布的约150个位置.例如这些位置的标记:
Chromosome Position
3 817702
12 1556936
13 1131566
Run Code Online (Sandbox Code Playgroud)
理想情况下,我还希望能够根据基因座指定几种不同的颜色,例如
Chromosome Position Type
3 817702 A
12 1556936 A
13 1131566 A
5 1041685 B
11 488717 B
14 1776463 B
Run Code Online (Sandbox Code Playgroud)
例如,"A"标记为蓝色,"B"标记为绿色.
在该图像中粘贴了与我想要产生的非常相似的图(来自Bopp等人,PlOS Genetics 2013; 9(2):e1003293):
任何人都可以推荐一种方法吗?它不一定必须是生物信息学包,如果有另一种方法我可以使用R生成14条特定比例尺寸的条,在条形图上的指定位置有标记.例如,我一直在考虑从ggplot2修改一个简单的条形图,但我不知道如何在特定位置沿着条形图标记.
我正在尝试使用1000之间的一组随机数在R中创建密度曲线,并将小于或等于某个值的部分着色.有很多解决方案涉及geom_area
或geom_ribbon
,但它们都需要一个yval
,我没有(它只是1000个数字的向量).有关如何做到这一点的任何想法?
另外两个相关问题:
stat_ecdf
它生成一个)做同样的事情,或者根本不用它?geom_vline
所以它只会达到密度曲线的高度,而不是整个y轴?代码:( geom_area
尝试编辑我发现的一些代码是失败的.如果我ymax
手动设置,我只需要一个列占据整个图,而不仅仅是曲线下面的区域)
set.seed(100)
amount_spent <- rnorm(1000,500,150)
amount_spent1<- data.frame(amount_spent)
rand1 <- runif(1,0,1000)
amount_spent1$pdf <- dnorm(amount_spent1$amount_spent)
mean1 <- mean(amount_spent1$amount_spent)
#density/bell curve
ggplot(amount_spent1,aes(amount_spent)) +
geom_density( size=1.05, color="gray64", alpha=.5, fill="gray77") +
geom_vline(xintercept=mean1, alpha=.7, linetype="dashed", size=1.1, color="cadetblue4")+
geom_vline(xintercept=rand1, alpha=.7, linetype="dashed",size=1.1, color="red3")+
geom_area(mapping=aes(ifelse(amount_spent1$amount_spent > rand1,amount_spent1$amount_spent,0)), ymin=0, ymax=.03,fill="red",alpha=.3)+
ylab("")+
xlab("Amount spent on lobbying (in Millions USD)")+
scale_x_continuous(breaks=seq(0,1000,100))
Run Code Online (Sandbox Code Playgroud) 基于这个问题当它与另一个重叠时自动弯曲一个弧,我试图pos
在一个RGraphviz
图中设置该属性.
有人可以展示如何正确使用该pos
属性或建议更强大的解决方法.谢谢.
例
为了与上述链接问题保持一致,以下示例从bnlearn
包含网格布局中的节点的图形开始.
library(bnlearn)
library(Rgraphviz)
library(igraph)
# Create graph
adj <- matrix(0L, ncol = 9, nrow = 9, dimnames = list(LETTERS[1:9], LETTERS[1:9]))
adj[upper.tri(adj)] <- 1
e <- empty.graph(LETTERS[1:9])
amat(e) <- adj
g <- as.graphNEL(e)
# layout in grid
ig <- igraph.from.graphNEL(g)
lay <- layout.grid(ig)
lay <- setNames(data.frame(norm_coords(lay, -100, 100, -100, 100)), c("x", "y"))
Run Code Online (Sandbox Code Playgroud)
帮助页面?GraphvizAttributes
表明pos
应该设置为
节点的位置(对于neato布局,这是节点的初始位置).使用概念val指定val,其中每个val是double.
更进一步,neato
只有属性
pin:如果TRUE且节点在输入上有pos属性,则neato会阻止节点从输入位置移动.此属性的默认值为FALSE.
我找不到应用此参数的正确方法.
我试过的各种事情没有成功
# Passed named list …
Run Code Online (Sandbox Code Playgroud) 我试图在R中计算一组数据(我的x变量的每一列)和另一个(y变量)之间的滚动协方差.我想我可以使用其中一个应用函数,但是找不到如何滚动两个同时设置输入.这是我尝试过的:
set.seed(1)
x<-matrix(rnorm(500),nrow=100,ncol=5)
y<-rnorm(100)
rollapply(x,width=5,FUN= function(x) {cov(x,y)})
z<-cbind(x,y)
rollapply(z,width=5, FUN=function(x){cov(z,z[,6])})
Run Code Online (Sandbox Code Playgroud)
但没有人做我想做的事.我找到的一个解决方案是使用for循环,但想知道我是否可以在R中更高效:
dResult<-matrix(nrow=96,ncol=5)
for(iLine in 1:96){
for(iCol in 1:5){
dResult[iLine,iCol]=cov(x[iLine:(iLine+4),iCol],y[iLine:(iLine+4)])
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我预期的结果:
head(dResult)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.32056460 0.05281386 -1.13283586 -0.01741274 -0.01464430
[2,] -0.03246014 0.78631603 -0.34309778 0.29919297 -0.22243572
[3,] -0.16239479 0.56372428 -0.27476604 0.39007645 0.05461355
[4,] -0.56764687 0.09847672 0.11204244 0.78044096 -0.01980684
[5,] -0.43081539 0.01904417 0.01282632 0.35550327 0.31062580
[6,] -0.28890607 0.03967327 0.58307743 0.15055881 0.60704533
Run Code Online (Sandbox Code Playgroud) 我遇到了困难ggplot2
.我阅读了大部分相关帖子,尝试了一些但没有找到任何真正的解决方案.
我想在我的标签数学表达式facet_grids
用ggplot2
.
qplot(day, activity, data=a) +xlab(expression("100 µg "*.L^"-1"*""))
::这很好用.我该如何处理facet_labels?我可以设置级别并重命名标签因子,但不考虑表达式,例如:
levels(a$group) <- c("control", expression("100 µg "*.L^"-1"*""))
qplot(…, facets=~group)
结果:
方面1的标签写在图表上:控制
方面2的标签写在图表上:"100μg" .L ^" - 1" ""......
我不希望这样.
我不想使用,facet_grid(.~group, labeller=label_bquote(…))
因为我不希望我的所有标签都遵循相同的表达方式.我想手动逐个编辑标签...我尝试用bquote(…)
而不是expression(…)
但同样的坏结果发生了
有人对此有任何线索吗?
一个例子:我定义了一个数据帧:
activity<- as.numeric(c("44","41","48","43","42","45","44","39", "47", "68", "88", "57"))
group<-c("first","first","first","first","first","first",
"second","second","second","second","second","second")
day<- c("0", "0", "0", "20","20", "20","0", "0", "0", "20","20", "20" )
a<-data.frame(activity, group, day)
Run Code Online (Sandbox Code Playgroud)
我的情节:
require (ggplot2)
Run Code Online (Sandbox Code Playgroud)
qplot(day, activity, facets=.~group, data=a, ylim=c(25,90))
我想更改构面标签和y轴的名称:
levels(a$group)<- c("control", …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gridExtra
包格式化表.gridExtra
我的包是2.0
和R版本是3.2.1
我在stackoverflow上找到关于格式化的答案,建议的选项似乎只适用于旧版本的软件包.例如,
grid.table(data, h.even.alpha = 1, h.odd.alpha = 0,
v.even.alpha = 1, v.odd.alpha = 1,
gpar.corefill, gpar.coretext)
Run Code Online (Sandbox Code Playgroud)
所有这些选项在最新版本中显示为"未使用的参数".
进一步搜索,我发现在新的gridExtra包中,格式化可能在主题内定义,例如 -
tt <- ttheme_default(core=list(fg_params=list(hjust=1, x=0.95)),
colhead=list(fg_params=list(col="brown"))
Run Code Online (Sandbox Code Playgroud)
然后做
grid.table(data, theme=tt).
Run Code Online (Sandbox Code Playgroud)
我找不到的是如何定义主题中的这些选项以及现在可以完成旧版本中可能的所有格式化.
特别是,我希望做到 -
r ×10
ggplot2 ×3
covariance ×1
density-plot ×1
diagrammer ×1
facet-grid ×1
genetics ×1
graph ×1
graphviz ×1
gridextra ×1
linux ×1
mermaid ×1
packages ×1
plot ×1
r-graphviz ×1
rollapply ×1