2012-06-04 61 views
0

我想製作一個圖表,其中x軸是日期(每個刻度是1天),並且y軸的每個刻度代表一個唯一標識的個體(一個魚)。然後,對於每個人每天,我會繪製一個點來顯示每個人是否在某一天被發現。用一個數字序列替換唯一ID

我的問題是,我有很多檢測到陰謀,約400人。唯一標識號碼的個體非常大(例如:161795550和165705763是400個唯一ID中的兩個)。有些人只看到幾天,一些人幾百人。

問題:以這種方式繪製(使用ggplot2)使得y軸不可能分散在低和高唯一ID之間,並且使用ggplot2無法破壞軸。所以,我對解決方案的想法是將唯一的ID重新編號爲從1到400的序列,作爲控制y軸上的擴散的一種方式。我可以手動執行此操作,但這需要很長時間。有沒有什麼好的方法來實現這種重命名的自動化?

這裏是一些代碼,可以用來重新創建一個應用的情況,我想重命名三個唯一的ID(165705763,161795422,161795351)爲(1,2,3)(除了會有400個ID在現實生活中的問題)。

a<-c("165705763","165705763","165705763","165705763","165705763","161795422","161795351","161795351","161795351") 
b<-c("Seine","Seine","Seine","Seine","Seine","Seine","HookAndLine","HookAndLine","HookAndLine") 
f<-c("2010-10-25","2010-10-18 ","2010-10-30","2010-11-12","2010-10-29","2010-10-16","2010-10-25","2010-10-16","2010-10-18") 
d<-cbind(a,b,f) 

歡迎任何其他解決方案!

+4

這對我來說沒有多大意義。你的ID是一個字符,而不是一個數字,因此ggplot會把它們當作因子,因此是一個分類比例,而不是數字。據我所知,應該沒有問題。 – Andrie

+0

它是數字,是一個整數。我將它保存爲一個角色,並且ggplot2完美地處理了它! – user1399311

+0

而不是將其轉換爲字符,您可以將'scale_y_discrete()'添加到您的圖 –

回答

1

Andrie的評論導致了一個明顯簡單的解決方案。原始數據的ID爲'Integer'類。我只是將ID重新分類爲字符,ggplot2自動縮放y軸