小编Jaa*_*aap的帖子

在ggplot2中对图例进行排序

我从以下数据中生成了堆积百分比条形图,该数据位于csv文件中,

,ONE,TWO,THREE
1,2432,420,18
2,276,405,56
3,119,189,110
4,90,163,140
5,206,280,200
6,1389,1080,1075
7,3983,3258,4878
8,7123,15828,28111
9,8608,48721,52576
10,9639,44725,55951
11,8323,45695,32166
12,2496,18254,26600
13,1524,8591,18583
14,7861,1857,1680
15,10269,5165,4618
16,13560,64636,63262
Run Code Online (Sandbox Code Playgroud)

使用以下代码

library(ggplot2)
library(reshape2)
library(scales)

data <- read.csv(file="file.csv",sep=",",header=TRUE)
data <- data[,2:ncol(data)]
datam <- melt(cbind(data,ind = sort(rownames(data))),is.var = c('ind'))
datam$ind <- as.numeric(datam$ind)
ggplot(datam,aes(x = variable, y = value,fill = factor(as.numeric(ind)))) +
geom_bar(position = "fill") + scale_y_continuous(labels =percent_format()) +
scale_fill_discrete("Barcode\nMatch")  +xlab("Barcode")+ylab("Reads")
Run Code Online (Sandbox Code Playgroud)

结果是 在此输入图像描述

问题是图例中的项目与它们所代表的堆栈的顺序不同.颜色和数字是正确的,但顺序不是.换句话说,有没有办法颠倒图例中项目的顺序?谢谢

r ggplot2

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

如何删除所有重复项以便NONE保留在数据框中?

PHP 有一个类似的问题,但我正在使用R,我无法将解决方案转换为我的问题.

我有10行50列的数据框,其中一些行完全相同.如果我在它上面使用unique,我会得到一行 - 比方说 - "type",但我真正想要的只是获得那些只出现一次的行.有谁知道我怎么能做到这一点?

我可以看看集群和热图来手动排序,但我有比上面提到的更大的数据帧(最多100行),这有点棘手.

r unique duplicates r-faq

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

如何在%运算符之间创建中缀%?

我想有一个中缀操作%between%R-检查,看是否x是下限之间l和上限u.

我创建了以下简单函数 - 但它不是中缀操作.

# between function - check to see if x is between l and u
is.between <- function(x, l, u) { x > l & x < u }
Run Code Online (Sandbox Code Playgroud)

我的目标是用以下代替: x %between% c(l, u)

是否可以定义新的中缀操作?如果是这样,那怎么做呢?

提前致谢

r

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

如何将管道链(magrittr)的结果提供给对象

这是一个相当简单的问题.但我找不到每个google/stackexchange的答案,并查看magrittr的文档.如何提供通过%>%连接的函数链的结果来创建向量?

我看到大多数人做的是:

a <-
data.frame( x = c(1:3), y = (4:6)) %>%
sum()
Run Code Online (Sandbox Code Playgroud)

但是还有一个解决方案,我可以将结果管道链接到一个对象,也许是别名或类似的东西,有点像这样:

data.frame( x = c(1:3), y = (4:6)) %>%
sum() %>%
a <- ()
Run Code Online (Sandbox Code Playgroud)

这将有助于将所有代码保持在相同的逻辑中,将结果输送到"管道下方".

r magrittr

21
推荐指数
3
解决办法
8539
查看次数

geom_bar的宽度和间隙(ggplot2)

我想用ggplot制作条形图.绘制后,当我做export> copy to clipboard然后尝试调整我的绘图的大小时,条形之间的间隙随着我改变绘图的大小而改变(条形之间的间隙改变其位置).

我希望我对此很清楚.我使用了以下代码:

ggplot(df, aes(Day, Mean)) +
 geom_histogram(stat = "identity", position = "stack") +
 theme(axis.text = element_text(size=12, colour =  'black')) +
 ylim(0, 50) + xlim(0, 365)
Run Code Online (Sandbox Code Playgroud)

我一直在使用这两种尝试geom_bargeom_histogram,双方似乎给了同样的情节.当我调整大小时,条之间的间隙会发生变化.

PS我必须绘制365 bars,每一个代表一年中的一天.如果您认为我不清楚,请随意编辑问题.

我用这里提供的代码创建的情节

这是用代码生成的图.您可以清楚地看到两者之间的不均匀间隙.

这是数据: 数据

编辑

数据

df <- data.frame(Mean=c(0,0,0,0,0,0,0.027272727,0,0.409090909,0.009090909,0,0,0,0,0,0.054545455,0.036363636,0.118181818,0.327272727,0.254545455,0,0,1.609090909,1.636363636,0,0.181818182,1.2,0.090909091,0.409090909,0.418181818,1.018181818,0.409090909,0.127272727,0.072727273,0.054545455,1.2,0.127272727,0.290909091,0,0.518181818,0.254545455,0.454545455,1.545454545,1.1,1.763636364,0,0.136363636,0.7,0.445454545,1.954545455,0.018181818,0,2.618181818,0,0,3.518181818,7.645454545,2.709090909,5.909090909,0.9,1.109090909,2.354545455,0.418181818,0.272727273,0,0,1.636363636,0,2.927272727,0.472727273,1,0,2.109090909,0.490909091,0.827272727,2.663636364,4.8,0.554545455,6.3,3.936363636,2.218181818,0.045454545,0,7.109090909,0,3.745454545,3.009090909,8.818181818,6,21.99090909,2.845454545,3.918181818,1.4,12.32727273,1.136363636,4.345454545,1.018181818,2.927272727,12.53636364,2.618181818,0.709090909,5.645454545,5.345454545,3.181818182,2.681818182,13.96363636,3.990909091,9.9,12.54545455,8.545454545,11.43636364,6.281818182,1.836363636,11.4,4.827272727,16.14545455,3.581818182,1.972727273,3.4,4.472727273,18.86363636,5,11.4,5.790909091,3.745454545,1.072727273,2.581818182,5.063636364,12.42727273,9.2,10.85454545,15.18181818,5.963636364,22.53636364,5.027272727,7,4.572727273,7.190909091,15.42727273,7.3,23.48181818,30.87272727,19.62727273,6.463636364,16.20909091,9.509090909,5.1,8.127272727,5.890909091,11.84545455,10.14545455,4.518181818,15.23636364,22.41818182,21.62727273,7.245454545,19.56363636,33.94545455,26.98181818,9.027272727,11.28181818,20.44545455,27.52727273,23.25454545,28.77272727,20.04545455,30.68181818,28.32727273,12.38181818,13.54545455,18.17272727,12.97272727,38.14545455,20.2,14.30909091,39.44545455,34.4,34.49090909,23.32727273,29.37272727,50.68181818,23.2,16.28,35.02,49,18.86,30.96,37.83,33.01,44.31,25.51,33.76,15.05,24.8,8.99,15.72,41.31,41.47,28.12,44.22,30.63,37.35,15.72,12.86,21.89,18.02,6.32,4.73,24.16,29.12,11.58,24.25,22.69,15.7,24.36,20.05,17.19,26.71,17.84,16.53,9.3,5.11,10.97,19.95,5.65,29.88,34.95,24.14,32.09,9.85,17.49,13.72,7.97,26.21,24.9,26.45,14.1,9.52,18.64,13.43,15.17,26.61,9.84,24.9,16.42,19.58,17.58,22.96,39.61,22.83,15.49,23.64,16.71,3.96,10.17,19.04,28.42,16.64,4.95,9.73,13.45,11.67,8.02,8.71,8.31,17.65,8.41,7.19,11.94,5.15,5.54,5.21,0.88,0.96,6.18,9.46,10.24,17.29,8.95,16.51,6.31,11.4,5.05,8.28,0.26,0,6.19,1.02,0.99,0.94,1.87,0,0.21,3.32,3.33,7.82,2.65,5.21,0.49,1.59,0.05,2.25,0,0,1.09,0.42,0,0.05,0.02,0,0.18,0,0.02,0.05,0.09,0.01,1.01,0,0,2.38,0.42,0.65,0,0,0,0.4,0,0,0,0,0.18,0,0,0,0,0,0.63,0,0,0,0.1,0,0,0,0,0,1.35,0,0,0,0,0,1.62,0.2,0,0,0,1.3,0,0,0,0,0.89,4.55,0), Day=seq(1, 365, 1))
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

计算每行的累计总和

我试图使用以下代码计算每行的累积总和:

df <- data.frame(count=1:10)

for (loop in (1:nrow(df)))
    {df[loop,"acc_sum"] <- sum(df[1:loop,"count"])}
Run Code Online (Sandbox Code Playgroud)

但我不喜欢这里的显式循环,我该如何修改呢?

r

20
推荐指数
3
解决办法
5万
查看次数

在包中寻找功能

找到包中所有相关函数的最佳方法是什么?我目前正在通过caTools包.如果我这样做?caTools或者??caTools我只是想要搜索那些被调用的函数而不是函数.有没有一种简单的方法来访问R gui中的所有功能?有没有什么好方法可以搜索功能?

r r-faq

20
推荐指数
3
解决办法
2085
查看次数

无法导入"google.api.services.samples.youtube.cmdline.Auth;"?

我按照本教程https://developers.google.com/youtube/v3/code_samples/java#search_by_keyword

使用YouTubeData API根据关键字检索YouTube视频

本节给出了错误: "Error:(117, 43) error: cannot find symbol variable auth"

youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
                public void initialize(com.google.api.client.http.HttpRequest request) throws IOException {
                }
            })
                    .setApplicationName("youtube-cmdline-search-sample")
                    .build();
Run Code Online (Sandbox Code Playgroud)

我认为这个类没有被导入

import com.google.api.services.samples.youtube.cmdline.Auth;
Run Code Online (Sandbox Code Playgroud)

我在互联网上搜索了其他有此问题的人,但这个问题从来没有得到解答....有人可以帮助我吗?

android-youtube-api

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

如何设置plot()标记x轴?

我有一个我正在尝试制作的plot(),但我不希望将x值用作轴标签...我想要一个不同的字符向量,我想用作标签,在标准中方式:使用尽可能多的数量,丢弃其他数据等.我应该通过plot()来实现这一目标?

例如,考虑一下

d <- data.frame(x=1:5,y=10:15,x.names=c('a','b','c','d','e'))
Run Code Online (Sandbox Code Playgroud)

在barplot中,我会通过barplot(height=d$y,names.arg=d$x.names),但在这种情况下,实际的x值很重要.所以我想要一个类似的模拟plot(x=d$x,y=d$y,type='l',names.arg=d$x.names),但这不起作用.

plot r

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

复杂的重塑

我想重塑我的数据帧从长格式到宽格式,我放弃了一些我想保留的数据.对于以下示例:

df <- data.frame(Par1 = unlist(strsplit("AABBCCC","")),
                 Par2 = unlist(strsplit("DDEEFFF","")),
                 ParD = unlist(strsplit("foo,bar,baz,qux,bla,xyz,meh",",")),
                 Type = unlist(strsplit("pre,post,pre,post,pre,post,post",",")),
                 Val = c(10,20,30,40,50,60,70))

   #     Par1 Par2 ParD Type Val
   #   1    A    D  foo  pre  10
   #   2    A    D  bar post  20
   #   3    B    E  baz  pre  30
   #   4    B    E  qux post  40
   #   5    C    F  bla  pre  50
   #   6    C    F  xyz post  60
   #   7    C    F  meh post  70

dfw <- dcast(df,
             formula = Par1 + …
Run Code Online (Sandbox Code Playgroud)

r dataframe reshape2

19
推荐指数
5
解决办法
877
查看次数