我有数据可以看到两种不同物种的单一栽培和混合栽培之间的生长差异.此外,我制作了一个图表,以使我的数据清晰.
我想要一个带有误差条的条形图,整个数据集当然更大,但是对于这个图,这是data.frame带有条形图的方法.
plant species means
Mixed culture Elytrigia 0.886625
Monoculture Elytrigia 1.022667
Monoculture Festuca 0.314375
Mixed culture Festuca 0.078125
Run Code Online (Sandbox Code Playgroud)
有了这个数据I作出的曲线图ggplot2,其中plant是在x轴和means所述y轴和I中使用的小面来划分种类.
这是我的代码:
limits <- aes(ymax = meansS$means + eS$se, ymin=meansS$means - eS$se)
dodge <- position_dodge(width=0.9)
myplot <- ggplot(data=meansS, aes(x=plant, y=means, fill=plant)) + facet_grid(. ~ species)
myplot <- myplot + geom_bar(position=dodge) + geom_errorbar(limits, position=dodge, width=0.25)
myplot <- myplot + scale_fill_manual(values=c("#6495ED","#FF7F50"))
myplot <- myplot + labs(x = "Plant treatment", y = "Shoot biomass (gr)")
myplot …Run Code Online (Sandbox Code Playgroud) 我正在ggplot2中制作一个躲闪的条形图,一个分组的数量为零,我想显示.我记得有一段时间在这里看到这个,并认为它scale_x_discrete(drop=F)会起作用.它似乎不适用于躲避酒吧.如何显示零点数?
例如,下图(下面的代码),type8~group4没有例子.我仍然希望绘图显示零计数的空白空间而不是消除栏.我怎样才能做到这一点?

mtcars2 <- data.frame(type=factor(mtcars$cyl),
group=factor(mtcars$gear))
m2 <- ggplot(mtcars2, aes(x=type , fill=group))
p2 <- m2 + geom_bar(colour="black", position="dodge") +
scale_x_discrete(drop=F)
p2
Run Code Online (Sandbox Code Playgroud) 我在data.table中有一个大型数据集,我想按日期范围进行分组.我的数据集如下所示:
testset <- data.table(date=as.Date(c("2013-07-02","2013-08-03","2013-09-04",
"2013-10-05","2013-11-06")),
yr = c(2013,2013,2013,2013,2013),
mo = c(07,08,09,10,11),
da = c(02,03,04,05,06),
plant = LETTERS[1:5],
product = as.factor(letters[26:22]),
rating = runif(25))
Run Code Online (Sandbox Code Playgroud)
我希望能够直接从选择的日期范围as.Date列不使用yr,mo或da列.目前,我正在进行mo分组,有时非常笨重,尤其是在多年转换的时候.一种更优雅的方法可以让我的生活变得更加轻松.
提前致谢!
我一直在玩data.table,我遇到了一个区别,我不确定我是否理解.给定以下数据集:
library(data.table)
set.seed(400)
DT <- data.table(x = sample(LETTERS[1:5], 20, TRUE), key = "x"); DT
Run Code Online (Sandbox Code Playgroud)
你可以向我解释以下表达方式之间的区别吗?
1) DT[J("E"), .I]
2) DT[ , .I[x == "E"] ]
3) DT[x == "E", .I]
我有一个数据集如下:
library(data.table)
test <- data.table(structure(list(Issue.Date = structure(c(16041, 16056, 16042,15990, 15996, 16001, 15995, 15981, 15986, 15996, 15996, 16002,16015, 16020, 16025, 16032, 16023, 16084, 16077, 16102, 16104,16107, 16112, 16113, 16115, 16121, 16125, 16128, 16104, 16132,16133, 16135, 16139, 16146, 16151), class = "Date"),
Complaint = structure(c(1L,4L, 4L, 4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L,5L, 3L, 1L, 3L, 1L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 1L, 3L,3L, 3L), .Label = c("A", "B", "C", "D", …Run Code Online (Sandbox Code Playgroud) 我有一组数据需要在ggplot2中绘制.这是订购时间.这是数据集:
testset <- data.table(Date=as.Date(c("2013-07-02","2013-08-03","2013-09-04","2013-10-05","2013-11-06","2013-07-03","2013-08-04","2013-09-05","2013-10-06","2013-11-07")), Action = c("A","B","C","D","E","B","A","B","C","A","B","E","E","C","A"), rating = runif(30))
Run Code Online (Sandbox Code Playgroud)
我正在做的是绘制它并使用scale_x_date将有条件的数据放在图表上.但是,当我这样做时,它不会将它装入月份大小的箱子中.相反,它会在采取行动的那一天将其加入.
ggplot(testset, aes(Date, fill=Action)) + geom_bar(position="dodge") + scale_x_date(labels = date_format("%b %Y"), breaks = date_breaks(width = "months"))
Run Code Online (Sandbox Code Playgroud)
我想做的是将每个月的所有日期放在一个垃圾箱中,然后绘制成图.在浏览StackOverflow时我没有找到任何解决方案,在浏览ggplot2或scale_x_date的文献时没有任何问题.如果他们可以提供我正在寻找的输出,我不反对使用lubridate或zoo.
提前致谢!
编辑:从@mnel看到下面的答案后,我最后发布了一个关于如何修改情节的问题.在@tonytonov给我的帮助和@mnel给我的帮助之间,我想出了一个解决方案.
ggplot(testset, aes(as.factor(as.yearmon(Date)), fill=Action)) +
geom_bar(position='dodge') + xlab("Date") + ylab("Count")
Run Code Online (Sandbox Code Playgroud)
这最终给了我这个图:

感谢你们俩!
我正在试图弄清楚如何转换我的条形图.现在,Gears填充按数字顺序排列.我试图能够以Gears任意顺序手动设置填充的顺序.
我找到的所有其他示例告诉我如何根据数据的计数或值以降序或升序对它们进行排序.我正在尝试以任意顺序手动设置订单.因此,我想手动告诉它我希望数据显示为3-5-4或5-3-4,而不是3-4-5.
这就是我现在拥有的:
library(data.table)
library(scales)
library(ggplot2)
mtcars <- data.table(mtcars)
mtcars$Cylinders <- as.factor(mtcars$cyl)
mtcars$Gears <- as.factor(mtcars$gear)
setkey(mtcars, Cylinders, Gears)
mtcars <- mtcars[CJ(unique(Cylinders), unique(Gears)), .N, allow.cartesian = TRUE]
ggplot(mtcars, aes(x=Cylinders, y = N, fill = Gears)) +
geom_bar(position="dodge", stat="identity") +
ylab("Count") + theme(legend.position="top") +
scale_x_discrete(drop = FALSE)
Run Code Online (Sandbox Code Playgroud)

如果要进行任何不涉及的数据操作ggplot2,我想使用它data.table.谢谢您的帮助!
我在ggplot2中使用zoo创建了一个图表来创建月份箱.但是,我希望能够修改图形,使其看起来像标准的ggplot图形.这意味着将丢弃未使用的容器以及填充整个容器空间的容器.这是我的代码:
library(data.table)
library(ggplot2)
library(scales)
library(zoo)
testset <- data.table(Date=as.Date(c("2013-07-02","2013-08-03","2013-09-04","2013-10-05","2013-11-06","2013-07-03","2013-08-04","2013-09-05","2013-10-06","2013-11-07")),
Action = c("A","B","C","D","E","B","A","B","C","A","B","E","E","C","A"),
rating = runif(30))
Run Code Online (Sandbox Code Playgroud)
ggplot调用是:
ggplot(testset, aes(as.yearmon(Date), fill=Action)) +
geom_bar(position = "dodge") +
scale_x_yearmon()
Run Code Online (Sandbox Code Playgroud)
我不确定我错过了什么,但我想知道!提前致谢!
我有一个shiny看起来像这样的应用程序
ui.R
shinyUI(fluidPage(
titlePanel("Test Application"),
sidebarLayout(
sidebarPanel(
selectizeInput("N",
label = ("N"),
multiple = TRUE,
choices = NULL,
options = list(
placeholder = 'Select All Desired, Type to Search',
onInitialize = I('function() { this.setValue(""); }')
)),
selectizeInput("M",
label = "M",
multiple = TRUE,
choices = NULL,
options = list(
placeholder = 'Select All Desired, Type to Search',
onInitialize = I('function() { this.setValue(""); }')
))
),
mainPanel(
tabsetPanel(
tabPanel("Test Plot 1",
plotOutput("testPlot1"))
)
))))
Run Code Online (Sandbox Code Playgroud)
server.R
library(data.table)
library(ggplot2)
options("stringsAsFactors" = FALSE, …Run Code Online (Sandbox Code Playgroud) 我有一个正在查询的数据集。数据如下:
db.activity.insert(
{
"_id" : ObjectId("5908e64e3b03ca372dc945d5"),
"startDate" : ISODate("2017-05-06T00:00:00Z"),
"details" : [
{
"code" : "2",
"_id" : ObjectId("5908ebf96ae5003a4471c9b2"),
"walkDistance" : "03",
"jogDistance" : "01",
"runDistance" : "08",
"sprintDistance" : "01"
}
]
}
)
db.activity.insert(
{
"_id" : ObjectId("58f79163bebac50d5b2ae760"),
"startDate" : ISODate("2017-05-07T00:00:00Z"),
"details" : [
{
"code" : "2",
"_id" : ObjectId("58f7948fbebac50d5b2ae7f2"),
"walkDistance" : "01",
"jogDistance" : "02",
"runDistance" : "09",
"sprintDistance" : ""
}
]
}
)
Run Code Online (Sandbox Code Playgroud)
我想要的输出如下所示:
[
{
"_id": null,
"uniqueValues": [
"03",
"01",
"08",
"02", …Run Code Online (Sandbox Code Playgroud) 我有一个data.table我需要分成列表.这是一个示例数据集:
testSet <- data.table(A = 1:2, B = 4:5, C = rep(7:8, times = 50),
D = 9:10, E = 15:16, F = 24:25, G = 27:28,
H = 29:30, I = 32:33, J = 35:36, K = 1:50)
Run Code Online (Sandbox Code Playgroud)
如您所见,它有11列,每列都是数字.我需要按10列中的值进行拆分,以便创建列表列表.我创建了以下功能代码(Macbook Air供参考):
system.time(testSetLists <- split(testSet,
list(testSet[["A"]], testSet[["B"]], testSet[["C"]],
testSet[["D"]], testSet[["E"]], testSet[["F"]],
testSet[["G"]], testSet[["H"]], testSet[["I"]],
testSet[["J"]])))
> user system elapsed
0.759 0.109 0.731
Run Code Online (Sandbox Code Playgroud)
这完美地工作,并给我我所需的输出.但是,当我在一列中增加数字范围时,如A下面的数据集中所示:
testSet <- data.table(A = 1:5, B = 4:5, C = rep(7:8, times = 50), …Run Code Online (Sandbox Code Playgroud) 我有一个现有的深层嵌套的mongoDB架构,我必须弄平,因为我有一个复杂的查询,无法用当前结构有效地进行.这是架构的MWE:
db.test.insert({
"_id" : ObjectId("58e574a768afb6085ec3a388"),
"details" : [
{
"_id" : ObjectId("58e55f0f68afb6085ec3a2cc"),
"a" : [
{
"unit" : "08",
"size" : "5",
"pos" : "Far",
"_id" : ObjectId("58e55f0f68afb6085ec3a2d0")
}
],
"b" : [
{
"unit" : "08",
"size" : "5",
"pos" : "Far",
"_id" : ObjectId("58e55f0f68afb6085ec3a2cd")
}
],
"c" : [
{
"unit" : "08",
"size" : "3",
"pos" : "Far",
"_id" : ObjectId("58e55f0f68afb6085ec3a2ce")
}
],
"d" : [
{
"unit" : "08",
"size" : "5",
"pos" : "Far",
"_id" …Run Code Online (Sandbox Code Playgroud)