我正在尝试绘制堆积的条形图。它的工作,但仍然有一些我不明白的功能,例如,xts能做什么?我是否正在使用所有已加载的库?替换轴标签,它可以处理原始数据,但不能处理融化的数据(数据被融化以生成堆积条,因为我没有找到其他使用data.frame生成堆积条的方法)。我也想为该堆叠栏使用单色。我尝试将'fill = variable'替换为'fill = c(“ orange”,“ blue”,“ green”)'',只是尝试不起作用。请帮助。.谢谢..
library(ggplot2)
library(xts)
library(reshape2)
library(lubridate)
library(zoo)
setwd("C:/Users/Hp/Documents/yr")
data1 <- read.csv("yr1983.csv", head = TRUE, stringsAsFactors = FALSE)
data1$Date <- dmy(data1$Date)
#data1 <- xts(x = data1[,-1], order.by = data1[,1])
head(data1)
Date Inland middle coastal
1 1983-11-01 0.0 0.0 0.0
2 1983-11-02 0.0 0.0 0.0
3 1983-11-03 90.5 19.5 60.0
4 1983-11-04 88.5 28.5 53.8
5 1983-11-05 80.5 73.0 122.0
6 1983-11-06 179.5 102.0 141.3
#plot stacked bar
data.m <- melt(data1,id.vars = "Date")
p1 <- ggplot(data.m, aes(x = Date, y = value,fill=variable)) +
geom_bar(stat='identity')
p1
#try to rename the axis - error
Rainfall_Intensity <- data1$value
month <- data1$Date
ggplot(data.m, aes(x = month, y = Rainfall_Intensity,fill= variable)) +
geom_bar(stat='identity')
*Error: Aesthetics must be either length 1 or the same as the data (276): x, y, fill
ggplot(data1, aes(month, y = Rainfall_Intensity,fill= variable)) + geom_bar(stat='identity')
*Error in eval(expr, envir, enclos) : object 'Date' not found
答案 0 :(得分:1)
看起来:
Rainfall_Intensity <- data1$value
month <- data1$Date
变量Rainfall_Intensity和month不在 data.m 内。因此,当您使用ggplot时,它会产生上述错误。您必须重命名变量:
rename(data.m,Rainfall_Intensity = value, month = Date)
然后,运行ggplot2。
答案 1 :(得分:1)
fill = variable
下的 aes
指的是应该根据其分隔堆积条形的变量。要更改堆叠条形的颜色,您想更改geom_bar
ggplot(data.m, aes(x = Date, y = value,fill=variable))
+ geom_bar(stat='identity', fill = c("orange", "blue", "green"))
您可以参考-http://sape.inf.usi.ch/quick-reference/ggplot2/colour-选择颜色。
答案 2 :(得分:1)
ggplot2
在整个数据帧上运行,因此它希望您用来映射aes
中的美学的任何名称都是提供给data
的数据框中的裸列名称。初始ggplot
调用的参数,或特定几何图形的data
参数。因此,如果您有一个名为date
的全局变量,并且您调用了ggplot(data, aes(x = date, y = value))
,它将在data
中寻找名为date
的列,如果其中一个找不到。
如果需要重命名数据框中的列,则可以使用许多不同的方式,例如names(data.m) <- c(...)
或setNames(data.m, c(...))
。
但是,如果您需要做的只是更改轴标签,则可以在构建绘图时进行。要么使用labs
分配标签,要么在相应的缩放功能内分配单个标签。
使用labs
一次更改多个标签(我只是根据数据样本猜测):
library(tidyverse)
...
ggplot(data.m, aes(x = Date, y = value, fill = variable)) +
geom_col() +
labs(x = "Month", y = "Rainfall intensity", fill = "Location",
title = "Rainfall intensity by location",
subtitle = "November 1983")
仅更改对scale_x_date
的调用中的x轴标签:
ggplot(data.m, aes(x = Date, y = value, fill = variable)) +
geom_col() +
scale_x_date(name = "Month")
由reprex package(v0.2.0)于2018-06-29创建。