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))
我图中的图例偶尔会将大小变量的值显示为 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))