我想在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.
任何帮助表示赞赏.
我试图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=region来map_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 中,采用以下格式(作为文本文件)
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)
作为第一次观察等等。
有什么办法可以:
我的想法是用空格分割字符串,除非它需要在 2 到 x 个空格之间(例如,"United Kingdom"保持在一起并且不会变成"United" "" "Kingdom")。但我不知道这是否可能。
我试过了,strsplit(data.frame[,1], sep="\\s")但它返回一个字符串列表,如:
"John,Smith" "" "" "" "" "" "" "" "United" "" "Kingdom" "" ""...
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办。
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) 我一直在使用rmarkdown/knitr的knit to html功能为一些博客生成 html 代码。我发现它非常有用和方便,但最近遇到了一些文件大小问题。
当我编写一个包含使用 shapefile 或ggmap图像的图形的脚本时,html 文件变得太大,博客主机无法理解它(我已经尝试过使用 blogger 和 wordpress)。ggmap我相信这与相对较大的 data.frames/files(shapefiles/被放入 html 形式)有关。我可以做些什么来获得一个可以由博客主机解析的较小的 html 文件吗?
作为参考,rmarkdown 脚本的 html 输出为ggmap1.90MB,其中一个图形使用一层、一层 shapefile 和一些数据,这对于博主或 WordPress 来说太大了,无法在 html 输入中处理。感谢您的任何想法。
如何在地图上的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) 我有一些这样的数据:
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.date为Group==A是2010-01-01.下一个最早start.date的Group==A是2011-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) 我正在尝试在 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) 当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)
我希望这将返回所有行。
我正在尝试构建一个函数来将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) 尝试在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中运行,没问题.
我有一个自定义函数,它的结果我想要在 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) 有没有办法在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)
r ×13
data.table ×4
ggplot2 ×4
knitr ×2
plotly ×2
choropleth ×1
htmlwidgets ×1
maps ×1
mozilla ×1
performance ×1
plot ×1
posixct ×1
r-markdown ×1
shiny ×1