2012-07-17 332 views
0

我正在绘制一些索引数据作为条形图。我想通过迫使x轴在100(以使得80的值将表现为-20巴。)我可以在ggplot2中更改x轴与y轴相交的位置吗?

越过强调的数字的“上方指数”和“下方指数” -ness

这是一个更长的过程的一部分,所以很难有效地共享数据。这里,虽然是一些说明该问题(和我的解决方案的开始)bodge-γ的代码:

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() 

我可以,当然,改变我指数计算如下:图表适当(value.new/value.old)*100-100然后标题(像“xxx相对于指数”),但这似乎很笨拙。

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

毫无疑问,有人是怎么回事告诉我,这种轴操作是令人难以接受的。如果是这种情况,请他们指出我的解释方向?至少我会学到一些东西。

+0

你能provde的要完成的任务可重复的例子吗? – 2012-07-17 08:37:21

+0

请参阅[这里](http://stackoverflow.com/a/27808635/937932)了解如何通过破解y轴标签来实现此目的。 – nacnudus 2015-01-06 22:57:36

回答

1

你的坐标系中的情节有X- (0,0)处与y轴交叉。这只是您定义坐标系的方式。你当然可以在(x = 100)处画一条水平线,但是要调用这个是x轴是假的。

你已经提出了什么是通过将数据重新定义你的坐标系。无论这种转变是否合适,都可以通过一个可重复的例子来回答。

+0

这很有趣 - 谢谢你的明确解释。这是一个相当普遍的标呈现有关的观众信息时,在销售演示使用(和我以前的首选工具,Excel中,很容易让我选择这里的“水平轴交叉于:”。) 我们的目的通常是为了展示如何与索引相比,一群人或多或少地同意某些陈述。显然黑线会实现这一点 - 我想知道它是否会更“诚实”? – mediaczar 2012-07-17 10:03:07

+4

@mediaczar Excel不是真正的统计研究和可视化的基准:)。 – 2012-07-17 10:13:51

4

这并不直接回答你的问题,但不是与x轴缺失有关,为什么不把单个网格线厚一点?例如,

dd = data.frame(x = 1:10, y = runif(10)) 
g = ggplot(dd, aes(x, y)) + geom_point() 
g + geom_hline(yintercept=0.2, colour="white", lwd=3) 

enter image description here

或者如保罗所说,有一条黑线和一些文字:

g + geom_hline(yintercept=0.2, colour="black", lwd=3) + 
     annotate("text", x = 2, y = 0.22, label = "Reference") 

enter image description here

+0

我认为在那里画一个纯黑色会更清楚,并且可能会添加一段说“参考”等的文字。 – 2012-07-17 08:46:50