54

我正在使用 ggplot2 0.9.1 绘制一个相当简单的图表。

x <- rnorm(100, mean=100, sd = 1) * 1000000
y <- rnorm(100, mean=100, sd = 1) * 1000000
df <- data.frame(x,y)

p.new <- ggplot(df,aes(x,y)) +
  geom_point()
print(p.new)

哪个有效,但 ggplot2 默认使用不适合我的听众的科学记数法。如果我想通过输入来更改 x 轴标签格式:

p.new + scale_x_continuous(labels = comma)

我得到:

结构错误(列表(调用 = match.call(),美学 = 美学,:找不到对象“逗号”

我究竟做错了什么?我注意到该语言最近从“格式化程序”更改为“标签”。也许我误读了手册页?

编辑:我确实误读了手册页

library(scales)在尝试此操作之前需要加载。

4

3 回答 3

67

library(scales)在尝试此操作之前需要加载。

于 2012-08-16T21:24:10.567 回答
5

更一般地说,您可以使用“scales”包控制一些不错的参数。它的功能之一是 number_format()。

library(ggplot2)
library(scales)
p <- ggplot(mpg, aes(displ, cty)) + geom_point()

要格式化您的数字,您可以使用函数 number_format()。它提供了一些不错的可能性,例如控制小数位数(这里是 2 个小数)和小数点(这里是 ',' 而不是 '.')

p + scale_y_continuous(
  labels = scales::number_format(accuracy = 0.01,
                                 decimal.mark = ','))
于 2020-01-09T07:15:37.930 回答
2

下面是一个示例,说明如何使用scales::comma_format().

本质上允许使用 prettyNum() 格式的样式。

Seatbelts_df <- as.data.frame(Seatbelts)

ggplot(data=Seatbelts_df, aes(x=Seatbelts_df$drivers, y=Seatbelts_df$DriversKilled, color=factor(Seatbelts_df$law))) +
  geom_jitter(alpha=0.5) +
  theme(plot.title=element_text(face="bold")) +
  labs(title="Amount of Drivers on Road vs Amount of deaths", subtitle = "Dataset from package datasets::Seatbelts", x ="Drivers on Road", y="Amount of Deaths", color="Seatbelt Law?") +
  scale_color_manual(labels = c("Yes", "No"), values = c("blue", "red")) +
  geom_vline(aes(xintercept=mean(Seatbelts_df$drivers)), color="black", linetype="dashed", size=1) +
  scale_x_continuous(
  labels = scales::comma_format(big.mark = ',',
                                 decimal.mark = '.'))

带逗号的输出示例

于 2020-03-08T20:40:40.710 回答