如何使 cdf 图更平滑并标记 y 轴
how to make a cdf plot smoother and label y axis
我从文件中读取参数 "data1" 和 "data2" 并使用此代码绘制 cdf,但我有两个问题:
- 使图形更平滑
- 将 Y 轴标记为 CDF
请注意此代码是正确的,但我需要进行一些修改。
df <- data.frame(x = c(data1, data2), ggg=factor(rep(1:2, c(19365,19365))))
ggplot(df, aes(x, colour = ggg)) +
stat_ecdf() +
labs(x='Time (ms)', ggg='CDF', fill='') +
theme_bw()+
theme(panel.grid.major = element_line(colour = 'grey'),
panel.border = element_rect(colour = 'black'),
axis.line = element_blank(),
panel.background = element_blank(),
legend.direction='vertical',
legend.position = c(1, 0.5),
legend.justification = c(1, 0.5),
legend.background = element_rect(colour = NA)) +
scale_colour_hue(name='', labels=c('IEEE 802.11p','Our protocol'))
经验分布函数始终是一个阶跃函数,您不应该以任何方式对其进行平滑处理。话虽如此,您可以使用 ecdf
获得经验分布函数的值。如果你想对结果做任何平滑处理(不建议这样做),你可以。
require(dplyr)
res <- df %>%
group_by(ggg) %>%
do(data.frame(x = sort(.$x),
ecdf = ecdf(.$x)(sort(.$x))))
ggplot(res, aes(x, ecdf, colour = ggg)) + geom_step()
要重新标记 y
轴,您可以使用
labs(x='Time (ms)', y='CDF')
我从文件中读取参数 "data1" 和 "data2" 并使用此代码绘制 cdf,但我有两个问题:
- 使图形更平滑
- 将 Y 轴标记为 CDF
请注意此代码是正确的,但我需要进行一些修改。
df <- data.frame(x = c(data1, data2), ggg=factor(rep(1:2, c(19365,19365))))
ggplot(df, aes(x, colour = ggg)) +
stat_ecdf() +
labs(x='Time (ms)', ggg='CDF', fill='') +
theme_bw()+
theme(panel.grid.major = element_line(colour = 'grey'),
panel.border = element_rect(colour = 'black'),
axis.line = element_blank(),
panel.background = element_blank(),
legend.direction='vertical',
legend.position = c(1, 0.5),
legend.justification = c(1, 0.5),
legend.background = element_rect(colour = NA)) +
scale_colour_hue(name='', labels=c('IEEE 802.11p','Our protocol'))
经验分布函数始终是一个阶跃函数,您不应该以任何方式对其进行平滑处理。话虽如此,您可以使用 ecdf
获得经验分布函数的值。如果你想对结果做任何平滑处理(不建议这样做),你可以。
require(dplyr)
res <- df %>%
group_by(ggg) %>%
do(data.frame(x = sort(.$x),
ecdf = ecdf(.$x)(sort(.$x))))
ggplot(res, aes(x, ecdf, colour = ggg)) + geom_step()
要重新标记 y
轴,您可以使用
labs(x='Time (ms)', y='CDF')