小编cam*_*lle的帖子

如何连接条形图,就像 geom_密度_ridges 对直方图所做的那样

我在 R 中创建绘图时遇到麻烦。如果我有类似的数据

在此输入图像描述

我想创建:

在此输入图像描述

x 轴为萼片长度、萼片宽度、花瓣宽度、花瓣长度,y 轴为不同物种,高度为值。并根据 y 轴用不同的颜色填充每个条形图。

谢谢你!

到目前为止,我已经尝试过:

iris_mean <- aggregate(iris[,1:4], by=list(Species=iris$Species), FUN=mean) 
library(reshape2)
df_mean <- melt(iris_mean, id.vars=c("Species"), variable.name = "Samples", 
  value.name="Values")

ggplot(df_mean,aes(Samples,Values))+
geom_bar(aes(fill=Species),stat="identity")+
  facet_grid(Species~.,scale='free',space='free')+theme(panel.margin = unit(0.1, "lines"))


ggplot(df_mean,aes(x=Samples,y=Species,height =Values))+
  geom_density_ridges2(aes(fill=Species),stat='identity',
                       scale=1.5,
                       alpha=0.1,
                       lty = 1.1)
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggridges

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

read.csv比data.table :: fread快

通过网络我可以读到我应该使用data.table和fread来加载我的数据.

但是当我运行基准测试时,我得到以下结果

Unit: milliseconds
expr       min        lq      mean    median        uq        max neval
test1  1.229782  1.280000  1.382249  1.366277  1.460483   1.580176    10
test3  1.294726  1.355139  1.765871  1.391576  1.542041   4.770357    10
test2 23.115503 23.345451 42.307979 25.492186 57.772522 125.941734    10
Run Code Online (Sandbox Code Playgroud)

代码可以在下面看到.

loadpath <- readRDS("paths.rds")

microbenchmark(
  test1 = read.csv(paste0(loadpath,"data.csv"),header=TRUE,sep=";", stringsAsFactors = FALSE,colClasses = "character"),
  test2 = data.table::fread(paste0(loadpath,"data.csv"), sep=";"),
  test3 = read.csv(paste0(loadpath,"data.csv")),
  times = 10
) %>%
  print(order = "min") 
Run Code Online (Sandbox Code Playgroud)

我明白这fread()应该比read.csv()因为它试图首先将行作为字符读入内存然后尝试将它们转换为整数和因子作为数据类型而更快.另一方面,fread()简单地将所有内容都读作字符.

如果这是真的,不test2应该快于test3

有人可以解释我,我为什么不archieve一个加速或者至少相同的速度test2test1 …

r fread dataframe data.table

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

R:tibble :: lst名称中不需要的引号

我最近才知道tibble::lst,它创建了一个列表对象,但自动命名列表项.我正在使用它作为%>%工作流中的一个快捷方式,它使用名称作为.id参数map_dfr,因此自动命名非常有用.

但是,这些名字会在它们周围加上引号.我注意到了这一点,因为它们在a的轴刻度标签上笨拙地印刷ggplot,即我有一个标签"Hartford"而不是Hartford.

我查看了tidyverse/tibblegithub 上的问题,但没有找到任何内容.这是一个错误,还是我做错了什么?

library(dplyr)
library(purrr)

cities <- lst("New Haven", "Bridgeport", "Hartford")
cities
#> $`"New Haven"`
#> [1] "New Haven"
#> 
#> $`"Bridgeport"`
#> [1] "Bridgeport"
#> 
#> $`"Hartford"`
#> [1] "Hartford"

cities %>%
  map_dfr(~tibble(dummy = rnorm(1)), .id = "city")
#> # A tibble: 3 x 2
#>   city               dummy
#>   <chr>              <dbl>
#> 1 "\"New Haven\""  -0.956 
#> 2 "\"Bridgeport\""  0.533 
#> 3 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tibble

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

在ggplot2中设置scale_colour_gradientn的值

我试图使用scale_colour_gradientn 来清楚地显示负值与正值:负值是蓝色,正值是红色。但是gradientn似乎忽略了我的颜色向量,并且只制作了一个大渐变而不是n个小渐变。这是我的示例代码...

xx <- -100:100
yy <- xx
fma <- data.frame( xx, yy)
ggplot( fma) +
  geom_point( aes( xx, yy, col=yy)) +
  scale_colour_gradientn(
    colours=c('#0000ff','#0000ff','#ff0000','#ff0000'),
    values=c(  -100,       -1,      1,      100))
Run Code Online (Sandbox Code Playgroud)

我怎样才能说服gradientn把所有东西都涂成[-100,-1]蓝色,把所有东西涂成[1,100]红色?

r ggplot2

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

如何使用R中的正则表达式从字符串中提取文本?

我有一个向量字符串,例如:

x <- c("gene_biotype \"protein_coding\"; transcript_name \"IGHV3-66-201\"; 
transcript_source \"havana\"; transcript_biotype \"IG_V_gene\"; 
protein_id \"ENSP00000375041\"; protein_version \"2\"; tag 
\"cds_end_NF\"; tag \"mRNA_end_NF\"; tag \"basic\"; 
transcript_support_level \"NA\";",
"gene_id \"ENSG00000211973\"; gene_version \"2\"; transcript_id 
\"ENST00000390633\"; transcript_version \"2\"; exon_number \"1\"; 
gene_name \"IGHV1-69\"; gene_source \"ensembl_havana\"; gene_biotype 
\"IG_V_gene\"; transcript_name \"IGHV1-69-201\"; transcript_source 
\"ensembl_havana\"; transcript_biotype \"IG_V_gene\"; protein_id 
\"ENSP00000375042\"; protein_version \"2\"; tag \"cds_end_NF\"; tag 
\"mRNA_end_NF\"; tag \"basic\"; transcript_support_level \"NA\";",
"gene_id \"ENSG00000211973\"; gene_version \"2\"; transcript_id 
\"ENST00000390633\"; transcript_version \"2\"; exon_number \"2\"; 
gene_name \"IGHV1-69\"; gene_source \"ensembl_havana\"; gene_biotype 
\"protein_coding\";")
Run Code Online (Sandbox Code Playgroud)

我需要提取遵循gene_biotype的引用文本(任何字符)。例如:

[1] protein_coding\ 
[2] IG_V_gene\
[3] protein_coding\ …
Run Code Online (Sandbox Code Playgroud)

regex r

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

如何将 ggplotly 从 R闪亮应用程序导出为 html 文件

我的闪亮应用程序中有一个名为 p2 的 ggplotly 对象。我希望它能够工作,如果用户在应用程序 UI 中按下 downloadButton,它将把 ggplotly 图下载为 html 文件。但该功能不起作用:

output$Export_Graph <- downloadHandler(

      filename = function() {
        file <- "Graph"

      },

      content = function(file) {
        write(p2, file)
      }

Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

r ggplotly

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

更改 ggplot 图例标签的位置和对齐方式

我最近访问了《经济学人》,看到了一篇关于 Wordl 的未成年婚姻的地图可视化的帖子。你可以在这里看到帖子

我正在尝试使用 R 语言中的 ggplot2 重新制作情节,但在制作图例时发现了一些困难。

这是我目前能做的

我的_ggplot

这是我的代码来可视化它

library(ggplot2)
library(dplyr)

WorldData <- map_data('world') %>% filter(region != "Antarctica") %>% fortify

p <- ggplot() +
    geom_map(data = WorldData, map = WorldData,
                  aes(x = long, y = lat, group = group, map_id=region),
                  fill = "#b4c3c9", colour = "white", size=0.05) + 

    geom_map(data = child_marriage, map=WorldData,
                  aes(fill=Total, map_id=Country),
                  colour="white", size=0.05) +

      coord_map(projection = "mollweide",ylim=c(-90,90), xlim=c(-180,180)) +

    scale_fill_continuous(low="#f1dcbb", high="#005379", guide = guide_legend()) + #gonna change this
    scale_colour_manual(values = c("red", "blue", "green")) + …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何对数据框的每一列应用不同的条件?

假设我有一个包含三列的数据框。

a <- c(1,2,3,4)
b <- c(2,4,6,8)
c <- c(3,6,9,12)
df <- cbind(a,b,c)
df
Run Code Online (Sandbox Code Playgroud)

这给你...

     a b  c
[1,] 1 2  3
[2,] 2 4  6
[3,] 3 6  9
[4,] 4 8 12
Run Code Online (Sandbox Code Playgroud)

现在假设我想创建一个新的数据框,如果该值大于列均值,则取值为TRUE,如果小于列均值,则取值为FALSE。

如果我使用以下命令,它将对整个数据框使用均值。

large <- df > mean(df)
large
Run Code Online (Sandbox Code Playgroud)

所以我得到...

         a     b     c
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE  TRUE
[3,] FALSE  TRUE  TRUE
[4,] FALSE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)

我想得到

         a     b     c
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,] TRUE  TRUE  TRUE
[4,] TRUE …
Run Code Online (Sandbox Code Playgroud)

r multiple-conditions multiple-columns

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

Rstudio 编辑大型代码时速度非常慢

RStudio 总体运行良好(v 2021.09.1 Build 372)。但当编辑大型代码(7000行,函数集合)时,即使点击文本或展开也需要大约4秒的时间才能响应。我尝试禁用诊断,但问题仍然出现。有什么设置可以帮忙吗?

performance r rstudio

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

如何按条件删除R中的前导行和尾随行?

有一个数据集,其中前行和后行的特征值为零。如何以优雅的方式删除此类行?

# Library
library(tidyverse)

# 1. Input
data.frame(
  id = c(1:10),
  value = c(0, 0, 1, 3, 0, 1, 2, 8, 9, 0))

# 2. Delete leading and trimming rows with 'value = 0'
# ...

# 3. Desired outcome
data.frame(
  id = c(3:9),
  value = c(1, 3, 0, 1, 2, 8, 9))
Run Code Online (Sandbox Code Playgroud)

谢谢。

r rows dplyr

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

R ggplot2 geom_bar,具有 3 维,无面

我有以下数据框:

 df <- structure(list(Source = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L,2L, 1L, 1L, 2L, 2L), .Label = c("Nutrition", "Supplements"), class = "factor"),Gender = c("Female", "Male", "Female", "Male", "Female","Male", "Female", "Male", "Female", "Male", "Female", "Male"), vitamins = c("Carbohydrates", "Carbohydrates", "Carbohydrates","Carbohydrates", "Free sugars", "Free sugars", "Free sugars","Free sugars", "Dietary fibre", "Dietary fibre", "Dietary fibre","Dietary fibre"), percentage = c(103.257255625661, 103.435668737283,12.1783865511905, 10.3397081952058, 26.9383952366656, 14.6831075438958,66.1535947328921, 62.5632737468906, 161.653065420191, 205.648132846479,50.7043993619127, 48.5061463560061)), row.names = c(NA, -12L), class = c("tbl_df", "tbl", "data.frame")) 
Run Code Online (Sandbox Code Playgroud)

我想创建这个没有小面的图表,只有填充、颜色和线型。我花了两个小时想弄清楚,但我不知道该怎么做。

通缉图表

顺序非常重要。第一个应该是比例最高的一组“维生素”。有没有办法减少组内条形图之间的差距?有没有办法将性别添加为第二个图例,其中男性类别将带有条纹?

非常感谢您的帮助。

charts r ggplot2

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