2015-12-08 2 views
1

Я пытаюсь построить данные и столкнуться с проблемой с числовой осью. Она должна быть построена в следующем порядке:Реорганизация цифровой оси

1, 2, 3, 4, 5... 22, X, Y 

Вместо этого он черчения так:

1, 10, 11, 12... 2, 22, 3, 4..., X, Y 

Я попытался изменить столбец в вопросе с as.character, as.factor, as.numeric. Я также проверил несколько «переставить» предложения , но все они имеют дело с самими наблюдениями, а не с осью.

Что я могу увидеть?

Вот пример данных:

Chr Chunk A B C 
1 1 3 4 4 
1 2 3 4 4 
1 3 3 2 4 
1 4 3 4 9 
2 1 3 3 4 
2 2 3 4 4 
2 3 3 4 4 
10 1 3 4 4 
10 2 3 4 4 
X 1 3 4 5 
X 2 3 4 8 
Y 1 3 4 5 

Я пытаюсь сделать ряд тепловых участков с использованием ggplot:

heat <- ggplot(data, aes(Chr, Chunk, fill = A, label = sprintf("", A))) + geom_tile() + geom_text() + scale_fill_gradient2(high = "red") 
+1

Не могли бы вы объяснить, как была сгенерирована ваша переменная? – GPierre

+4

Ответ почти всегда на то, что ваша переменная является либо символом, либо фактором, и ваши попытки изменить этот факт были безуспешными. Но что конкретно вы сделали неправильно и как _специфично, чтобы исправить это, невозможно сказать без лишних подробностей о фактическом коде, который вы используете, и о ваших данных. – joran

+0

Я отредактировал для ясности и предоставил некоторые тестовые данные. Я предполагаю, что X, Y в конце кадра данных является виновником. Я мог бы удалить их, но не хотел бы, если бы можно было разобраться в этом и сохранить их. – mfk534

ответ

2

Так как вы имеете дело с символьными данными, ggplot будет просто сортировать ваши данные для построения графика (и символьные строки лексикографически упорядочены, так что '10' предшествует '2'). Если вы хотите повлиять на порядок, преобразуйте персонажа в упорядоченный. К сожалению, это требует фактического предоставления заказа вручную (но в вашем случае этот порядок не так сложно записать):

data$Chr = factor(data$Chr, levels = c(1 : 22, 'X', 'Y'), ordered = TRUE) 
+0

Большое спасибо! Это работало с одной настройкой ... странно, когда я бегал, как она выше, ось менялась правильно в моем сюжете, но наблюдения в теле сюжета остались не в порядке. Почему это так? В любом случае, я удалил «ordered = TRUE» и правильно построил. – mfk534

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