小编med*_*zar的帖子

ggplot2中的数字格式化轴标签?

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

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

p.new + scale_x_continuous(labels = comma)
Run Code Online (Sandbox Code Playgroud)

我明白了:

Error in structure(list(call = match.call(), aesthetics = aesthetics,  : 
  object 'comma' not found
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我注意到语言最近从"格式化"改为"标签".也许我误读了手册页?

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

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

r ggplot2

52
推荐指数
2
解决办法
3万
查看次数

OS X sed -E不接受扩展正则表达式

我一直在尝试各种方法来使用OS X上的sed做一些基本的事情.以下是一些简单测试的结果.

echo "foo bar 2011-03-17 17:31:47 foo bar" | sed 's/foo/FOUND/g'
Run Code Online (Sandbox Code Playgroud)

返回(按预期)

FOUND bar 2011-03-17 17:31:47 FOUND bar
Run Code Online (Sandbox Code Playgroud)

echo "foo bar 2011-03-17 17:31:47 foo bar" | sed -E 's/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/FOUND/g'
Run Code Online (Sandbox Code Playgroud)

回报

foo bar 2011-03-17 17:31:47 foo bar
Run Code Online (Sandbox Code Playgroud)

(甚至更刺激)

echo "food bar 2011-03-17 17:31:47 food bar" | sed -E 's/\d/FOUND/g'
Run Code Online (Sandbox Code Playgroud)

回报

fooFOUND bar 2011-03-17 17:31:47 fooFOUND bar
Run Code Online (Sandbox Code Playgroud)

现在,man sed页面说明了这一点

The following options are available:

 -E      Interpret regular expressions as extended (modern) regular
         expressions rather than basic regular …
Run Code Online (Sandbox Code Playgroud)

regex macos sed

26
推荐指数
2
解决办法
8493
查看次数

ggplot2:按月和周绘制时间序列数据

我试图按周和月绘制时间序列数据; 理想情况下,我认为,我想使用箱形图来显示按周分类的每日数据.虽然我可以使用更改x轴上的标签和网格线scale_x_date,但这不会影响绘图中的点.

这是一个问题的演示和我目前(笨拙)的解决方案.

library(zoo)
library(ggplot2)

d = as.Date(c(as.Date("2007-06-01"):as.Date("2008-05-31"))) # using zoo to reformat numeric 
x = runif(366, min = 0, max = 100)
df = data.frame(d,x)

# PROBLEM #    
p = ggplot(df, aes(d, x))
p + geom_point()
p + geom_boxplot() # more or less useless

# CURRENT FIX #
df$Year.Month <- format(df$d, "%Y-%m")
p = ggplot(df, aes(Year.Month, x))
p + geom_point(alpha = 0.75)
p + geom_boxplot() # where I'm trying to get to...
Run Code Online (Sandbox Code Playgroud)

我确信从内部有更优雅的方式来做到这一点ggplot.我对吗?

@ shadow的答案下面更整洁.但有没有办法使用binning来做到这一点? …

r ggplot2

6
推荐指数
1
解决办法
3276
查看次数

按日期子集箱线图,按月排列 x 轴

我有跨越两个日历年的一年数据。我想按月为这些数据子集绘制箱线图。

这些图将始终按字母顺序(如果我使用月份名称)或数字(如果我使用月份数字)排序。都不符合我的目的。

在下面的示例中,我希望 x 轴上的月份从 6 月(2013 年)开始,到 5 月(2014 年)结束。

date <- seq.Date(as.Date("2013-06-01"), as.Date("2014-05-31"), "days")

set.seed(100)
x <- as.integer(abs(rnorm(365))*1000)

df <- data.frame(date, x)

boxplot(df$x ~ months(df$date), outline = FALSE)
Run Code Online (Sandbox Code Playgroud)

我可能会按照我需要的顺序生成月份的向量(例如months <- months(seq.Date(as.Date("2013-06-01"), as.Date("2014-05-31"), "month"))

有没有更优雅的方法来做到这一点?我错过了什么?

r date boxplot

4
推荐指数
1
解决办法
1万
查看次数

我可以更改 ggplot2 中 x 轴与 y 轴相交的位置吗?

我将一些索引数据绘制为条形图。我想通过强制 x 轴在 100 处交叉来强调数字的“高于索引”和“低于索引”(这样 80 的值将显示为 -20 条。)

这是一个更长的过程的一部分,因此很难有效地共享数据。不过,这里有一些说明问题的代码(以及我的解决方案的开始):

df <- data.frame(c("a","b","c"),c(118,80,65))
names(df) <- c("label","index")

my.plot <- ggplot(df,aes(label,index))
my.plot + geom_bar()

df$adjusted <- as.numeric(lapply(df$index,function(x) x-100))

my.plot2 <- ggplot(df,aes(label,adjusted))
my.plot2 + geom_bar()
Run Code Online (Sandbox Code Playgroud)

当然,我可以将我的指数计算更改为:(value.new/value.old)*100-100然后适当地为图表命名(类似于“xxx 相对于指数”),但这似乎很笨拙。

那么,我一直在测试的方法(运行上面的简单计算,然后重新标记 y 轴)是否真的是最好的解决方案?

毫无疑问,有人会告诉我,这种轴操纵是不受欢迎的。如果是这种情况,请他们指出我的解释方向吗?至少那时我会学到一些东西。

r ggplot2

0
推荐指数
1
解决办法
2538
查看次数

标签 统计

r ×4

ggplot2 ×3

boxplot ×1

date ×1

macos ×1

regex ×1

sed ×1