绘图上的最大y值不正确

时间:2017-03-02 18:21:58

标签: r ggplot2

我的情节的y值不正确。

data <- read.xlsx('filename')
data <- melt(data)
data$dvmph <- as.numeric(as.character(data$dvmph))

ggplot(data, aes(x=variable, y = dvmph, 
                 fill=value)) + geom_col() + coord_polar() + labs(x="PDOF", y="dvmph") + scale_fill_gradient(low='khaki',high='red')

enter image description here

如你所见,该图的最大dvmph为500--但实际的最大dvmph为49.这是一个数据样本:

> data
   dvmph variable     value
1      1       X0      0.00
2      3       X0   2486.60
3      5       X0 100519.29
4      7       X0 471515.00
5      9       X0 973180.19
6     11       X0 758789.62
7     13       X0 500884.34
8     15       X0 441252.43
9     17       X0 228094.07
10    19       X0 358144.00
11    21       X0 173614.35
12    23       X0  73395.79
13    25       X0  79245.32
14    27       X0  59789.64
15    29       X0  35539.05
...
814    17     X350 116754.15
815    19     X350 173989.62
816    21     X350  76056.33
817    23     X350  32374.60
818    25     X350  26640.38
819    27     X350  34852.71
820    29     X350  11826.09
821    31     X350   7499.55
822    33     X350   4713.12
823    35     X350   4981.18
824    37     X350   5845.43
825    39     X350   2250.77
826    41     X350   2111.73
827    43     X350   1179.72
828    49     X350   5936.01

> max(data$dvmph)
[1] 49

我不太确定是什么导致了这一点。我认为这与geom_col()有关,因为当我使用geom_tile()时,情节看起来是正确的(即y轴终止于50)。但出于审美原因,我无法使用geom_tile()(使用geom_tile()而不是geom_col()时,我的数据中存在差距更明显。)

1 个答案:

答案 0 :(得分:0)

ggplot(data, aes(x=variable, y = dvmph, 
                 fill=value)) + geom_col(position="identity") + coord_polar() + labs(x="PDOF", y="dvmph") + scale_fill_gradient(low='khaki',high='red')

给出了预期的比例

enter image description here

我猜你正在使用一个带有bug的旧版本的软件包,尝试重新安装/更新ggplot2及其依赖项和/或R,并确保运行一个vanilla R会话。