使用scale_y后,y轴上的值消失

时间:2016-07-13 11:52:32

标签: r plot ggplot2

我遇到了这样的问题。当我使用这样的代码时:

  dat3 <- data.frame(
  oprocentowanie <- factor(proc),
  składka <- factor(wektor_skladek))
dat3

png(filename = "/home/nilcorc/Documents/Licencjat/Rubezpieczenie/plots/analiza_oprocentowania_skladka",
    width = 600, height = 400)
ggplot(data=dat3, aes(oprocentowanie, składka)) +
  geom_bar(position="dodge", width=0.5, color="#6666FF",stat="identity",fill="#6666FF")+
  labs(title="Wrażliwość składki na stopę %")
dev.off()

我在Y轴上得到一个带有浮点值的图,但是当我添加

scale_y_discrete(breaks=c(0,1000,2000,3000,4000,5000,6000,7000,8000,9000)

Y轴上的所有值都消失了,我只是得到一个我不知道有多大的情节。你能帮帮我吗?

我想让Y轴上的值从0到9000增加1000。

数据框:

 oprocentowanie....factor.proc. skladki....factor.floor.wektor_skladek..
1                             0%                                     8216
2                           0.5%                                     7053
3                             1%                                     6053
4                           1.5%                                     5195
5                             2%                                     4458
6                           2.5%                                     3826
7                             3%                                     3286
8                           3.5%                                     2825
9                             4%                                     2431

没有比例的情节: Without numbers

带比例的情节: With numbers

和输入:

structure(list(oprocentowanie....factor.proc. = structure(1:9, .Label = c("0%", 
"0.5%", "1%", "1.5%", "2%", "2.5%", "3%", "3.5%", "4%"), class = "factor"), 
    skladki....factor..wektor_skladek.. = structure(c(9L, 8L, 
    7L, 6L, 5L, 4L, 3L, 2L, 1L), .Label = c("2431.59459253388", 
    "2825.48111629658", "3286.93674975244", "3826.96130538247", 
    "4458.17016548586", "5195.00332453903", "6053.96171257516", 
    "7053.8763920252", "8216.21779413142"), class = "factor")), .Names = c("oprocentowanie....factor.proc.", 
"skladki....factor..wektor_skladek.."), row.names = c(NA, -9L
), class = "data.frame")

1 个答案:

答案 0 :(得分:2)

尝试将scale_y_discrete(breaks=1:9)列设为数字而不是因子。请注意每个条形图之间的步长是如何大小相同的,即使标签偏差超过这个尺寸? (例如2431到2825与7053到8216的距离相同。)这是因为每个只是因子级别中的下一个标签。因此,如果您添加ggplot(data=dat3, aes(oprocentowanie, as.numeric(as.character(składka)))) + geom_bar(position="dodge", width=0.5, color="#6666FF",stat="identity",fill="#6666FF")+ labs(title="Wrażliwość składki na stopę %") + scale_y_continuous(breaks=c(0,1000,2000,3000,4000,5000,6000,7000,8000,9000) ,您将(正确地)获得标签1到9。

这应该有效:

dput(dat3)

如果您可以发布我们可以直接运行的代码,例如使用scale_y_continuous的输出

,那么会有更多帮助

(已编辑使用scale_y_discrete代替{{1}})