在ggplot中展开区域图的彩色部分

时间:2014-06-25 22:06:04

标签: r ggplot2

我希望在ggplot中展开区域图的彩色部分,以便在X轴的末端没有太多的灰色空间。当我使用scale_x_discrete(limits...)时,图表的彩色部分会自动缩小,从而无法实现目的。这是一个例子

df1 <- data.frame(sex       = factor(c("Female","Female","Male","Male")),
             time       = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
             total_bill = c(13.53, 16.81, 16.24, 17.42))

library(ggplot2)
ggplot(data=df1, aes(x=rep(c(1,2),2), y=total_bill, fill=sex)) + 
geom_area() +
scale_x_discrete(labels=df1$time)

太多的灰色空间,没有足够的彩色图表

ggplot(data=df1, aes(x=rep(c(1,2),2), y=total_bill, fill=sex)) +
geom_area() +
scale_x_discrete(limits=c(0.8,2.2), labels=df1$time)

X轴刻度更接近图的边缘,但现在彩色部分缩小了 和灰色空间保持不变。

2 个答案:

答案 0 :(得分:3)

expand

中使用scale_x_discrete

好像

library(ggplot2)
ggplot(data=df1, aes(x=rep(c(1,2),2), y=total_bill, fill=sex)) + 
  geom_area() +
  scale_x_discrete(labels=df1$time, expand=c(0.2, 0))

enter image description here

答案 1 :(得分:0)

你也可以使用coord_cartesian,它对很多不同的图非常有用,它会改变缩放而不影响实际数据的绘制位置。

ggplot(data=df1, aes(x=rep(c(1,2),2), y=total_bill, fill=sex)) + 
  geom_area() +
  scale_x_discrete(labels=df1$time) +
  coord_cartesian(xlim=c(0.8,2.2))