2012-06-29 34 views
6

Tôi cố gắng để vẽ một số dữ liệu thử nghiệm (hiển thị ở phần cuối của bài viết này), sử dụng ggplot sử dụng lệnh sau:Convert to từ ký hiệu khoa học để thập phân với ggplot

options(scipen=20)  
ggplot(testData,aes(x=Group.1, y=x), format(scientific=FALSE)) + 
scale_x_discrete(name="Test", formatter=comma) + geom_bar() 

Cốt truyện tạo ra cũng đủ, nhưng trục x là ký hiệu khoa học (như trong dữ liệu thử nghiệm), làm thế nào tôi sẽ đi về hiển thị nó ở thập phân thay vào đó? (Như đã trình bày trong lệnh tôi đã thử các tùy chọn scipen và các tùy chọn định dạng khác nhau - như đề xuất trong bài viết khác trên trang web này)

kiểm tra dữ liệu của tôi:

> str(testData) 
'data.frame': 5 obs. of 2 variables: 
$ Group.1: Factor w/ 5 levels "(1.3e+03,1.5e+03]",..: 1 2 3 4 5 
$ x  : num 80000 94000 86000 112000 98000 

> testData 
      Group.1  x 
1 (1.3e+03,1.5e+03] 80000 
2 (1.5e+03,1.7e+03] 94000 
3 (1.7e+03,1.9e+03] 86000 
4 (1.9e+03,2.1e+03] 112000 
5 (2.1e+03,2.3e+03] 98000 

> dput(testData) 
structure(list(Group.1 = structure(1:5, .Label = c("(1.3e+03,1.5e+03]", 
"(1.5e+03,1.7e+03]", "(1.7e+03,1.9e+03]", "(1.9e+03,2.1e+03]", 
"(2.1e+03,2.3e+03]"), class = "factor"), x = c(80000, 94000, 
86000, 112000, 98000)), .Names = c("Group.1", "x"), row.names = c(NA, 
-5L), class = "data.frame") 

Thế hệ của TestData:

testData <- aggregate(as.numeric(as.character(housing7$PRICE)), 
         by=list(cut(as.numeric(as.character(housing7$SIZE)), 
         breaks=5)), FUN=mean) 
+0

Đăng 'testData' với' dput (testData) '. – nograpes

+0

Bằng văn bản này, không biết lệnh đó - cảm ơn! – Johnny

+0

Ngoài ra, bạn đã tạo ra yếu tố đó như thế nào ('testData $ Group.1')? Bạn đã sử dụng 'cut' hay cái gì đó? – nograpes

Trả lời

6

Khi nhãn của yếu tố của bạn được lưu trữ trong ký hiệu khoa học, không dễ quay lại ký hiệu thông thường.

Vì bạn đã sử dụng cut để tạo yếu tố này, bạn có thể thay đổi số chữ số được sử dụng trong nhãn bằng đối số dig.lab. Ví dụ:

testData <- aggregate(as.numeric(as.character(housing7$PRICE)), 
by=list(cut(as.numeric(as.character(housing7$SIZE)), breaks=5,dig.lab=6)), FUN=mean) 
+0

Aha! đào là excatly những gì tôi đang tìm kiếm! Cảm ơn! BTW, bất kỳ cách nào để làm cho vết cắt của tôi sạch sẽ? (như được cắt thành số nguyên) – Johnny

+0

Lưu ý rằng có lỗi khung trong mã đó, hãy kiểm tra phiên bản cập nhật. – nograpes

+1

Kiểm tra '? Cut'. Nó cung cấp cho một loạt các tùy chọn. Hãy thử chỉ định các ngắt bạn muốn thay vì chỉ 'break = 5' như' breaks = c (100,200) '. – nograpes

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