2013-07-20 42 views
17

Tôi có khung dữ liệu rất lớn (2 cột) về mặt hồ sơ. Tôi đã vẽ đồ thị trong ggplot2. Trục X là thời gian và trục Y là giá trị. Trong một khoảng thời gian cụ thể từ thời gian 50 đến 60, tôi muốn làm cho các ve tăng dần nhỏ hơn như (50,51,51,53, ... 59,60). Đối với phần còn lại của trục, nó là tốt để có ve tăng thêm 10. Vì vậy, tôi mong chờ để có giá trị trục X như:Tùy chỉnh dấu x-trục

10,20,30,40,50,51,52,53,54,55,56,57,58,58,60,70,80,90,..190,200. 

Tôi biết, tôi có thể thay đổi thông qua ve scale_x_continuous bằng cách sử dụng breaksminor_breaks. Tuy nhiên, tôi không nhận được kết quả mong đợi. Đây là thử của tôi: (lưu ý: đã tạo dữ liệu chỉ là ví dụ như dữ liệu của tôi là rất lớn).

data: 
----- 
x<-seq(1:200) 
y<-seq(51,250,by=1) 
df<-data.frame(x=x,y=y) 

code:(Update based on @Didzis Elferts suggestion) 
----- 
ggplot(data=df, aes(x,y))+geom_line(size=1.6)+ 
    scale_x_continuous(breaks=c(10,20,30,40,seq(50,60,by=2),seq(70,200,10)) 
         ,minor_breaks=seq(50,60,by=2))+ 
    +theme(axis.text.x=element_text(size=16),axis.text.y=element_text(size=16))+ 
    +theme(axis.title.x=element_text(size=16),axis.title.y=element_text(size=16))+ 
    +theme(axis.ticks.x = element_line(size = 1))+xlab("Time")+ylab("value") 
    +theme(axis.ticks.length=unit(0.8,"cm")) 

Dựa trên đề xuất bên dưới, vấn đề duy nhất hiện nay là giá trị của trục X trong khoảng thời gian từ 50-60 không xuất hiện rõ ràng. sample of O/P Bất kỳ đề xuất nào để làm rõ!

Trả lời

21

Với đối số minor_breaks= bạn đặt các đường lưới nhỏ. Để đặt số dưới trục x, tất cả số phải được cung cấp với đối số breaks=.

ggplot(data=df, aes(x,y))+geom_line(size=1.6)+ 
    scale_x_continuous(breaks=c(10,20,30,40,seq(50,60,by=1),seq(70,200,10)), 
      minor_breaks=seq(50,60,by=1)) 

Đối với vấn đề thứ hai - bạn thiết axis.ticks.x=element_line(size=5) bên theme() - mà làm cho trục của bạn ve rộng hơn để họ xuất hiện hình chữ nhật nhỏ. Nếu bạn muốn tạo các dấu trục dài hơn, hãy sử dụng axis.ticks.length=.

+theme(axis.ticks.length=unit(0.5,"cm")) 
+0

Bạn nói đúng. Tuy nhiên, sau khi tôi áp dụng đề xuất của bạn, các giá trị của các ngắt nhỏ chồng lên nhau. Tôi không thể thấy các giá trị. Chúng ta có thể tăng không gian giữa mỗi dấu tích nhỏ, vì vậy các giá trị có thể được đọc. Có lẽ nếu chúng ta thay đổi phông chữ hoặc góc? – SimpleNEasy

+0

Bạn không thể tăng không gian trực tiếp giữa các lần ngắt nhỏ hơn. Ngoài ra kích thước phông chữ và góc có thể được thay đổi cho tất cả các nhãn trục x với nhau. –

+0

Kiểm tra cập nhật của tôi. Giải quyết vấn đề này như thế nào ! – SimpleNEasy