r ggplot 图例指数控制

r ggplot legend exponent control

我图中的图例偶尔会将大小变量的值显示为 1e+05。我的听众不太可能马上知道这与 100000 相同,所以我希望图例显示 100000、80000、60000、40000、20000。ggplot 中是否有控制此指数功能的方法?

我在示例代码中包含了一些假数据和示例图像。您必须多次重新运行 代码才能重现显示的问题。

library(data.table)
dt <- data.table(DATE = c("2014-03-01", "2014-04-01", "2014-05-01", 
                      "2014-06-01", "2014-07-01", "2014-08-01", 
                      "2014-09-01", "2014-10-01", "2014-11-01", 
                      "2014-12-01", "2015-01-01", "2015-02-01"
                      , "2015-03-01"),
             TOTAL_VOLUME = rnorm(n = 13, mean = 53000, sd = 25000),
             NON_CONFORMING_VOLUME = rnorm(n = 13, mean = 8400, sd = 6000))

# Switch any negatives to positive
dt$NON_CONFORMING_VOLUME <- abs(dt$NON_CONFORMING_VOLUME)
# Could have NON_CONFORMING > TOTAL, set arbitrarily to 30% of total
dt$NON_CONFORMING_VOLUME <- ifelse(dt$NON_CONFORMING_VOLUME > dt$TOTAL_VOLUME, 
                               dt$TOTAL_VOLUME * .3, dt$NON_CONFORMING_VOLUME)
dt$PERCENT_NON_CONFORMING <- dt$NON_CONFORMING_VOLUME / dt$TOTAL_VOLUME * 100

    p1 <- ggplot(data = dt, aes(x = DATE,
                        y = PERCENT_NON_CONFORMING, 
                        size = TOTAL_VOLUME)) +
  geom_point() +
  theme(legend.position="bottom") +
  ggtitle("Percent Non-Conforming by Month") +
  labs(x = "Month", y = "% Non-Conforming") +
  geom_hline(yintercept = mean(dt$PERCENT_NON_CONFORMING),
         colour = "darkorange")
plot(p1)

我很惊讶,当 运行 你的代码我没有得到科学记数法时,我得到了 20000、40000 等。也就是说,解决方法是在大小范围内指定 labels 函数,而 scales 包有不错的选项。逗号格式可能最适合此数据,那么您将得到 20,000, 40,000...

library(scales)
plot(p1 + scale_size_continuous(labels = comma))