2012-06-04 4 views
0

Я пытаюсь сделать график, в котором ось x является датой (каждый тик равен 1 день), и каждый тик оси y представляет собой однозначно идентифицированный индивид (a рыба). Затем, для каждого человека каждый день, я назову точку, чтобы показать, был ли каждый человек обнаружен в определенный день., заменяя уникальные идентификаторы последовательностью чисел

Моя проблема заключается в том, что у меня много тысяч обнаружений, и около 400 человек. Физические лица, однозначно идентифицирующие номера, довольно велики (например: 161795550 и 165705763 - два из 400 уникальных идентификаторов). Некоторые люди видятся только несколько дней, некоторые - несколько сотен.

НОМЕР: построение его таким образом (с использованием ggplot2) делает невозможным распространение оси Y между наименьшими и высокими уникальными идентификаторами, а с ggplot2 невозможно разбить ось. Итак, мои мысли о решении заключались в том, чтобы перенумеровать уникальные идентификаторы как последовательность от 1 до 400, как способ управления разбросом по оси y. Я мог бы сделать это вручную, но это займет много времени. Есть ли хороший способ автоматизировать это переименование?

Вот какой код можно использовать для воссоздания прикладной ситуации, где я хотел бы переименовать три уникальных идентификатора (165705763,161795422,161795351) в качестве (1,2,3) (кроме 400 идентификаторов в реальной жизни).

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

Это не имеет для меня большого смысла. Ваш идентификатор - это символ, а не числовой, поэтому ggplot будет рассматривать их как факторы и, следовательно, категорический масштаб, а не числовой. Насколько я могу судить, не должно быть проблем. – Andrie

+0

Он был числовым, как целое число. Я сохранил его как персонажа, и ggplot2 справился с ним отлично! – user1399311

+0

вместо того, чтобы преобразовать его в символ, вы можете просто добавить 'scale_y_discrete()' к вашему сюжету –

ответ

1

Комментарий Андри привел к явному простому решению. Исходные данные имели ID как класс Integer. Я просто рекламировал идентификаторы для символов, а ggplot2 автоматически масштабировал ось y

Смежные вопросы