y轴刻度之间不需要的不规则间隔,ggplot2条形图

时间:2016-12-12 16:40:49

标签: r ggplot2 bar-chart

我正试图在http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_(ggplot2)/之后使用ggplot2在r中创建一个简单的条形图 当我运行下面的代码时,y轴没有连续绘制。相反,间隔是不规则的,每个刻度设置等于我输入的值。如何将比例更改为从0%到-70%的常规10%间隔?

# Replicate dataset
seg=c(rep("City",2),rep("Supermini",2),rep("Small family",2),
rep("Large family",2),rep("MPV",2),
rep("Compact executive",2),rep("Executive",2),
rep("Sports",2),rep("SUV",2),rep("Luxury",2))

leg=rep(c("Cost","Mass"),10)

val=c(-0.26,-0.14, -0.34, -0.09, -0.21, -0.13, -0.09, -0.03, -0.22, -0.04,
-0.58, -0.24, -0.47,-0.44,-0.42,-0.14,-0.61,-0.39,-0.43,-0.03)

bardata=as.data.frame(cbind(seg,leg,val))

# Create bar chart
library(ggplot2)

ggplot(bardata, aes(factor(seg), val, fill = leg)) + 
  geom_bar(stat="identity", position = "dodge")+
  scale_fill_manual(values=c("deepskyblue4","deepskyblue2"))+
  labs(fill=NULL)+
  xlab(NULL)+
  ylab("Percentage change relative to base case")

1 个答案:

答案 0 :(得分:0)

使用cbind生成一个矩阵,强制所有列都采用相同的class。相反,使用以下命令生成data.frame:

bardata <- data.frame(seg,leg,val)

它将保留数据的单独类。当ggplot绘制val列作为因素时,它无法知道它实际上应该是数字。