小编mom*_*822的帖子

geom_density匹配geom_histogram binwitdh

我想在ggplot2中的分配条图中添加一行来显示平均分布但是遇到了麻烦.

像这样的ggplot调用:

ggplot(x, aes(date_received)) + 
    geom_histogram(aes(y = ..count..), binwidth=30) +
    geom_density()
Run Code Online (Sandbox Code Playgroud)

给出了每30天观察值的直方图条形图,但是密度线跟踪每一天的计数,如下所示(底部的静态来自geom_density.

在此输入图像描述

是否可以添加一个geom_density图层来覆盖一条线,该线将显示30天观察组的平均值,例如binwidthin geom_histogram.

任何帮助表示赞赏.

r ggplot2

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

geom_map"map_id"函数如何工作?

我试图geom_map弄清楚在ggplot2中的用法.

建立:

library(ggplot2)
library(maps)
county2 <- map_data("county")
Run Code Online (Sandbox Code Playgroud)

为什么这段代码:

ggplot() +
  geom_map(data=county2, map=county2, aes(x=long, y=lat, map_id=region), col="white", fill="grey")
Run Code Online (Sandbox Code Playgroud)

制作这个正确的情节: 在此输入图像描述

但改变map_id=regionmap_id=subregion做到这一点?

ggplot() +
  geom_map(data=county2, map=county2, aes(x=long, y=lat, map_id=subregion), col="white", fill="grey")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

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

将一个字符串拆分多个空格

我正在尝试将一些数据加载到 R 中,采用以下格式(作为文本文件)

Name                  Country            Age
John,Smith            United Kingdom     20
Washington,George     USA                50
Martin,Joseph         Argentina          43
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是“列”用空格分隔,这样它们都排列得很好,但一行可能在值和接下来的 10 个空格之间有 5 个空格。因此,当我加载它时,read.delim我会得到一个一列 data.frame

"John,Smith            United Kingdom     20"
Run Code Online (Sandbox Code Playgroud)

作为第一次观察等等。

有什么办法可以:

  1. 将数据加载到 R 中为可用格式?或者
  2. 一旦我以一列格式加载字符串,将字符串拆分为单独的列?

我的想法是用空格分割字符串,除非它需要在 2 到 x 个空格之间(例如,"United Kingdom"保持在一起并且不会变成"United" "" "Kingdom")。但我不知道这是否可能。

我试过了,strsplit(data.frame[,1], sep="\\s")但它返回一个字符串列表,如:

"John,Smith" "" "" "" "" "" "" "" "United" "" "Kingdom" "" ""...
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办。

r

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

geom_map "map_id" reference issue

I am trying to create a choropleth map of US counties with two datasets connected by FIPS codes. I am using the maps package county and county.fips data, combined into one data.table like this (probably not the most elegant way of integrating the FIPS data):

    library(ggplot2)
    library(maps)
    library(data.table)
    county <- map_data("county")    
    data(county.fips)
    county.fips <- as.data.table(county.fips)
    county.fips$polyname <- as.character(county.fips$polyname)    
    county.fips[, paste0("type", 1:2) := tstrsplit(polyname, ",")]
    names(county.fips) <- c("FIPS","polyname","region","subregion")
    county <- merge(county, county.fips, by=c("region", "subregion"), all=T)
    county <- county[,1:7]
    county <- as.data.table(county) …
Run Code Online (Sandbox Code Playgroud)

maps r ggplot2 choropleth

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

knitr HTML 输出太大

我一直在使用rmarkdown/knitrknit to html功能为一些博客生成 html 代码。我发现它非常有用和方便,但最近遇到了一些文件大小问题。

当我编写一个包含使用 shapefile 或ggmap图像的图形的脚本时,html 文件变得太大,博客主机无法理解它(我已经尝试过使用 blogger 和 wordpress)。ggmap我相信这与相对较大的 data.frames/files(shapefiles/被放入 html 形式)有关。我可以做些什么来获得一个可以由博客主机解析的较小的 html 文件吗?

作为参考,rmarkdown 脚本的 html 输出为ggmap1.90MB,其中一个图形使用一层、一层 shapefile 和一些数据,这对于博主或 WordPress 来说太大了,无法在 html 输入中处理。感谢您的任何想法。

r knitr r-markdown

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

在图中设置标记大小

如何在地图上的R中以图形方式更改标记大小?如果我将size参数设置为任何数字,它会使它变得相同,尺寸太大.如果我将它映射到我的数据中的变量,那么标记就会很小,以便能够首先区分它们.理想情况下,我想通过映射到变量来增加基本大小并保持比例方面.

可重复的例子:

library(data.table)
library(plotly)
library(dplyr)

sample <- data.table(Region=c("Illinois","Illinois","California","California","Texas","Texas"),
                     code=c("IL","IL","CA","CA","TX","TX"),
                     Group=c("A","B"),
                     Value=rnorm(6, mean=100, sd=6))

sample[Region=="Illinois", c('lat', 'long') := list(40.3363, -89.0022)]
sample[Region=="California", c('lat', 'long') := list(36.17, -119.7462)]
sample[Region=="Texas", c('lat', 'long') := list(31.106, -97.6475)]


x <- list(
  scope = 'usa',
  projection = list(type = 'albers usa'),
  showlakes = F,
  lakecolor = toRGB('lightblue')
)

sample %>%
  plot_geo(
    locationmode='USA-states'
  ) %>%
  add_markers(
    y=~lat, x=~long, hoverinfo="text",
    color=~Group,
    text=~Group, size=~Value
  ) %>%
  layout(
    title='plotly marker map',
    geo=x
  )
Run Code Online (Sandbox Code Playgroud)

r plotly

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

按组查找下一个日期

我有一些这样的数据:

sample.data <- rbind(data.table(start.date=seq(from=as.Date("2010-01-01"), to=as.Date("2014-12-01"), by="quarter"),
                 Group=c("A","B","C","D"), rnorm(20, 5)),
                 data.table(start.date=seq(from=as.Date("2010-01-01"), to=as.Date("2014-12-01"), by="quarter"),
                 Group=c("A","B","C","D"), rnorm(20, 3))
                 )
Run Code Online (Sandbox Code Playgroud)

我想创建一个end.date等于start.date每个组的下一个最早值的列.

因此,例如,第一个start.dateGroup==A2010-01-01.下一个最早start.dateGroup==A2011-01-01.所以当按以下顺序排序时,最终结果应如下所示Group:

                start.date Group   end.date
                2010-01-01     A 2011-01-01
                2010-01-01     A 2011-01-01
                2011-01-01     A 2012-01-01
                2011-01-01     A 2012-01-01
                2012-01-01     A 2013-01-01
                2012-01-01     A 2013-01-01
                2013-01-01     A 2014-01-01
                2013-01-01     A 2014-01-01
                2014-01-01     A         NA
                2014-01-01     A         NA
                2010-04-01     B 2011-04-01
                2010-04-01     B 2011-04-01
                2011-04-01     B 2012-04-01
                2011-04-01     B …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

在 Shiny 中下载和显示 PDF

我正在尝试在 Shinyapps.io 上的应用程序中显示来自网络的一些 PDF。不幸的是,由于混合内容保护(pdf 文件通过 http 提供),使用带有 URL 的 iframe 的标准方法不是一种选择。我认为一个可能的选择是从 url 下载 pdf,然后将它们显示在来自本地文件的 iframe 中,但我无法使用tempfile().

示例应用程序:

ui <- fluidPage(
  sidebarLayout(
      sidebarPanel(
        textInput("url", "add a url"),
        actionButton("button","hit the button"),
        h5("use case - embed a pdf user guide in the app - embed as a local pdf or from web URL")
      ), 
      mainPanel(
        tabsetPanel(
          tabPanel("PDF", 
                   htmlOutput("pdf")
                   )
          )
        )
      )
)

server <- function(input, output, session) {

  observeEvent(input$button, {
    temp <- tempfile(fileext = ".pdf")
    download.file(input$url, temp)

    output$pdf <- renderUI({ …
Run Code Online (Sandbox Code Playgroud)

r shiny

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

我的另一列上的R data.table grepl列

当A列中的字符串位于B列中时,我可以作为子集吗?

例:

x <- data.table(a=letters, y=paste0(letters,"x"))

x[grepl(a, y)]
x[like(y, a)]
Run Code Online (Sandbox Code Playgroud)

两者都只返回第一行的一行data.table和以下警告:

Warning message:
In grepl(pattern, vector) :
  argument 'pattern' has length > 1 and only the first element will be used
Run Code Online (Sandbox Code Playgroud)

我希望这将返回所有行。

r data.table

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

rbindlist:不适用的日期时间列

我正在尝试构建一个函数来将NAs 的行插入到data.table中。我使用rbindlist这种方式来完成它,这里x是一个data.table

rbindlist(
  list(
    x,
    as.list(rep(NA, ncol(x)))
  )
)
Run Code Online (Sandbox Code Playgroud)

我遇到一个问题,即POSIXct列不能与NA值绑定,如下所示:

x <- data.table(
  a=c(1,2),
  t=c(Sys.time(), Sys.time()+100)
)

rbindlist(
  list(
    x,
    as.list(rep(NA, ncol(x)))
  )
)
Run Code Online (Sandbox Code Playgroud)

这对我来说导致以下错误:

    Error in rbindlist(list(x, as.list(rep(NA, ncol(x))))) : 
  Class attributes at column 2 of input list at position 2 does not match with column 2 of input list at position 1. Coercion of objects of class 'factor' alone is handled internally by rbind/rbindlist at the …
Run Code Online (Sandbox Code Playgroud)

r posixct data.table

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

为什么绘制图形的图形不适用于Mozilla

尝试在Mozilla Firefox中打开与knitr一起放置的html文档时,我收到以下错误.该错误是由plotly包组成的图元素的结果.

unknownError: error occurred while processing 
'getCachedMessages: out of memory
Run Code Online (Sandbox Code Playgroud)

rmarkdown文件的全部内容(默认其他所有内容):

library(plotly)
library(ggplot2)
theData <- data.frame(A=1:26, B=letters, C=rnorm(26,19))

g<-ggplot(theData, aes(x=A, y=C)) +
  geom_point()
ggplotly(g)
Run Code Online (Sandbox Code Playgroud)

我有最新版本的Firefox.我似乎没有查看其他页面上有图形元素的问题.该页面在IE中运行,没问题.

mozilla r knitr plotly htmlwidgets

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

使用 mapply 速度问题更新 data.table

我有一个自定义函数,它的结果我想要在 data.table 中。我需要将此函数应用于另一个 data.table 的每一行中的一些变量。我有一种方法可以按照我想要的方式工作,但是速度很慢,我正在寻找是否有一种方法可以加快速度。

在我下面的示例中,重要的结果是 Column,它是在 while 循环中生成的,并且长度根据输入数据而变化,以及 Column2。

我的方法是让函数使用通过引用更新,:= 将结果附加到现有的 data.table。为了正确实现这一点,我将 Column 和 Column2 的长度设置为已知最大值,将 NA 替换为 0,然后简单地添加到现有的 data.table addTable 中,如下所示:addTable[, First:=First + Column]

此方法适用于我如何使用 mapply 在源 data.table 的每一行上应用该函数。这样,我就不必担心 mapply 调用的实际乘积(某种矩阵);它只是为它应用 sample_fun 的每一行更新 addTable。

这是一个可重现的示例:

dt<-data.table(X= c(1:100), Y=c(.5, .7, .3, .4), Z=c(1:50000))    
addTable <- data.table(First=0, Second=0, Term=c(1:50))

sample_fun <- function(x, y, z) {
  Column <- NULL
  while(x>=1) {
    x <- x*y
    Column <- c(Column, x)
  }

  length(Column) <- nrow(addTable)
  Column[is.na(Column)] <- 0

  Column2 <- NULL
  Column2 <- rep(z, …
Run Code Online (Sandbox Code Playgroud)

performance r data.table

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

传播刻面图(R)

有没有办法在ggplot2中传播刻面图?正如你在图片中看到的那样(我的情节的底部),x轴在每个图的两端重叠一点,模糊了岁月.我想将它们分开.无论我在导出时增加多少宽度,值仍然会重叠.

我的代码,如果相关:

  ggplot(filter(TotalsRegion, Source!="Total"), aes(x=Date, y=SourceSum, col=Source)) +
   geom_line(size=1) +
   facet_grid(.~Region)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

plot r ggplot2

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