ggplot - 从指数形式重新格式化比例并通过除以常数进行转换

时间:2013-10-22 18:55:51

标签: r ggplot2 axis-labels

我想要转换ggplot2轴标签的指数表示法并应用转换。 labels = commma给了我常规的非指数数字,但是我想添加一个转换,所以y轴的刻度是数千,而不是数百万。

library(ggplot2)
library(scales)
fy <- c("FY09 Q4", "FY09 Q3", "FY09 Q2", "FY09 Q1")
views <- c(15881100,  8888000, 24168000, 17611000)
df <- data.frame(FY=fy, views=views)
g <- ggplot(df, aes(x=FY, y=views))
g <- g + geom_bar(stat="identity")
g <- g + scale_y_continuous(labels = comma)
print(g)

1 个答案:

答案 0 :(得分:4)

您的问题不明确,但有几种方法可以做到这一点。我不打扰乱七八糟的东西,我会转换数据或增加数据,以便休息时间照顾自己。也就是说,我会保持休息和数据的一致性。

screenshot

library(ggplot2)
library(scales)
df <- data.frame(FY = c("FY09 Q4", "FY09 Q3", "FY09 Q2", "FY09 Q1"),
                 views = c(15881100,  8888000, 24168000, 17611000))
df$views.k <- df$views/1000

# Transform y in the ggplot call...
g <- ggplot(df, aes(x = FY, y = views/1000)) +
    geom_bar(stat = "identity") +
    scale_y_continuous(labels = comma)
print(g)

# ...or just use views.k
g <- ggplot(df, aes(x = FY, y = views.k)) +
    geom_bar(stat="identity") +
    scale_y_continuous(labels = comma)
print(g)