带有ggplot 2 y轴标签的条形图

时间:2015-07-16 14:40:21

标签: r plot ggplot2 bar-chart

我对ggplot条形图有点问题。

我想用ggplot2制作一个条形图,以便在几个月内比较我的4种股票的Svolumes。

我有两个问题:

第一个是我的y轴错了。我的图表/数据似乎是正确的,但是y轴不是"跟随"因为我认为它将包含另一个规模...我将不得不"总计"我的数据集svolumes的数量,我认为这是写我的svolumes值。我不知道如何解释,但我希望我的数据对应于图中的所有数据,如10,20等,直到我最高的svolume总和。

有我的代码:

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)

并且有我的情节:

my pbarchart

我帮助解决了问题here

最后,我怎么能为每个月制作相同的情节呢?我不知道如何获得每月的价值,以便有一个更易读的条形图,因为我们无法在这里阅读任何内容...

如果您对我有其他想法,我会很乐意接受任何想法和建议!也许与折线图相同会更具可读性......?或者每个股票的条形图可能相同? (我不知道如何获得每个股票的价值......)

我刚刚找到了如何使用直线进行操作....但是我的y轴又错了,而且它的可读性不高......

linechart

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:2)

尝试在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)