2012-04-19 39 views
5

Mã sau đây sử dụng để làm việc trước phiên bản .9 của ggplot2. Điều này là không thể nữa?Thêm một đường thẳng đứng với ggplot khi trục x là một hệ số

df = data.frame(x = letters[1:26], y=abs(rnorm(26))) 
ggplot(df, aes(x=x, y=y)) + geom_bar() + geom_vline(xintercept='m') 

tôi nhận được lỗi sau:

Error in get(as.character(FUN), mode = "function", envir = envir) : 
    object 'm' of mode 'function' was not found 

Trả lời

10

Tôi không biết (không nhớ) nếu bạn gốc được sử dụng để làm việc với phiên bản cũ của ggplot nhưng bạn có thể sử dụng một cách tiếp cận khác như cái này:

ggplot(df, aes(x=x, y=y)) + geom_bar() + geom_vline(xintercept=which(df$x == 'm')) 

Hy vọng trợ giúp này !!!

+0

Cảm ơn rất nhiều. Điều này làm việc hoàn hảo. Lưu ý nhỏ cho bất cứ ai sử dụng này, nếu bạn chỉ định xlim này sẽ không hoạt động chính xác. Đối với các trường hợp, tôi thực sự đảo ngược thứ tự (nghĩa là lớn nhất đến nhỏ nhất). Trong trường hợp đó, nó sẽ trả về vị trí trước khi đảo ngược. Dễ dàng để sửa chữa mặc dù. – jbryer

Các vấn đề liên quan