带有 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)