带有 ggplot 2 y 轴标签的条形图
Barchart with ggplot 2 y axis labels
我对 ggplot 条形图有点问题。
我想用 ggplot2 制作条形图,以便比较我的 4 只股票在几个月内的交易量。
我有两个问题:
第一个是我的y轴错了。我的 graph/data 似乎是正确的,但 y 轴不 "follow" 因为我认为它将包含另一个比例......我必须 "total" 我的数据集体积的数量,我想在这里它正在写我的 svolumes 值。我不知道如何解释,但我想要比例对应于我在图表上的所有数据,如 10,20 等,直到我的最大体积总和。
有我的代码:
Date=c(rep(data$date))
Subject=c(rep(data$subject))
Svolume=c(data$svolume)
Data=data.frame(Date,Subject,Svolume)
Data=ddply(Data, .(Date),transform,pos=cumsum(as.numeric(Svolume))-(0.5*(as.numeric(Svolume))))
ggplot(Data, aes(x=Date, y=Svolume))+
geom_bar(aes(fill=Subject),stat="identity")+
geom_text(aes(label=Svolume,y=pos),size=3)
还有我的剧情:
我帮忙解答了问题here
最后,请问如何为每个月制作相同的情节?我不知道如何获取每个月的值以获得更具可读性的条形图,因为我们无法在此处阅读任何内容...
如果您对我有其他想法,我很乐意接受任何想法和建议!也许与折线图相同会更具可读性......?或者每只股票的条形图可能相同? (我也不知道如何获得每只股票的价值...)
我刚刚找到了如何用线来做....但是我的 y 轴又一次错了,而且它不是很可读....
感谢您的帮助!! :)
尝试在 ggplot
函数之前添加以下行。看起来你的 y 轴在 character
.
[edit] 结合@user20650的评论,先加as.character()
再转成numeric
.
Data$Svolume <- as.numeric(as.character(Data$Svolume))
要为每个月生成相同的图,您可以先添加月份变量:Data$Month <- month(as.Date(Date))
。然后将 facet
添加到您的 ggplot 对象。
ggplot(Data, aes(x=Date, y=Svolume) +
...
+ facet_wrap(~ Month)
例如,您的条形图代码将为:
Data$Svolume <- as.numeric(as.character(Data$Svolume))
Data$Month <- month(as.Date(Date))
ggplot(Data, aes(x=Date, y=Svolume)) +
geom_bar(aes(fill=Subject),stat="identity") +
geom_text(aes(label=Svolume,y=pos),size=3) +
facet_wrap(~ Month)
您的折线图代码将是:
Data$Svolume <- as.numeric(as.character(Data$Svolume))
Data$Month <- month(as.Date(Date))
ggplot(Data, aes(x=Date, y=Svolume, colour=Subject)) +
geom_line() +
facet_wrap(~ Month)
我对 ggplot 条形图有点问题。
我想用 ggplot2 制作条形图,以便比较我的 4 只股票在几个月内的交易量。
我有两个问题:
第一个是我的y轴错了。我的 graph/data 似乎是正确的,但 y 轴不 "follow" 因为我认为它将包含另一个比例......我必须 "total" 我的数据集体积的数量,我想在这里它正在写我的 svolumes 值。我不知道如何解释,但我想要比例对应于我在图表上的所有数据,如 10,20 等,直到我的最大体积总和。
有我的代码:
Date=c(rep(data$date))
Subject=c(rep(data$subject))
Svolume=c(data$svolume)
Data=data.frame(Date,Subject,Svolume)
Data=ddply(Data, .(Date),transform,pos=cumsum(as.numeric(Svolume))-(0.5*(as.numeric(Svolume))))
ggplot(Data, aes(x=Date, y=Svolume))+
geom_bar(aes(fill=Subject),stat="identity")+
geom_text(aes(label=Svolume,y=pos),size=3)
还有我的剧情:
我帮忙解答了问题here
最后,请问如何为每个月制作相同的情节?我不知道如何获取每个月的值以获得更具可读性的条形图,因为我们无法在此处阅读任何内容...
如果您对我有其他想法,我很乐意接受任何想法和建议!也许与折线图相同会更具可读性......?或者每只股票的条形图可能相同? (我也不知道如何获得每只股票的价值...)
我刚刚找到了如何用线来做....但是我的 y 轴又一次错了,而且它不是很可读....
感谢您的帮助!! :)
尝试在 ggplot
函数之前添加以下行。看起来你的 y 轴在 character
.
[edit] 结合@user20650的评论,先加as.character()
再转成numeric
.
Data$Svolume <- as.numeric(as.character(Data$Svolume))
要为每个月生成相同的图,您可以先添加月份变量:Data$Month <- month(as.Date(Date))
。然后将 facet
添加到您的 ggplot 对象。
ggplot(Data, aes(x=Date, y=Svolume) +
...
+ facet_wrap(~ Month)
例如,您的条形图代码将为:
Data$Svolume <- as.numeric(as.character(Data$Svolume))
Data$Month <- month(as.Date(Date))
ggplot(Data, aes(x=Date, y=Svolume)) +
geom_bar(aes(fill=Subject),stat="identity") +
geom_text(aes(label=Svolume,y=pos),size=3) +
facet_wrap(~ Month)
您的折线图代码将是:
Data$Svolume <- as.numeric(as.character(Data$Svolume))
Data$Month <- month(as.Date(Date))
ggplot(Data, aes(x=Date, y=Svolume, colour=Subject)) +
geom_line() +
facet_wrap(~ Month)