重新排列数字轴

时间:2015-12-08 15:11:38

标签: r ggplot2

我试图绘制数据并遇到数字轴问题。它应按顺序绘制:

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 个答案:

答案 0 :(得分:2)

由于您正在处理字符数据,因此ggplot将简单地对您的数据进行排序以进行绘图(字符串按字典顺序排序,以便'10'出现在'2'之前。如果要影响订单,请将角色转换为有序因子。不幸的是,这需要手动提供订单(但在您的情况下订单并不难写下来):

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