我有一个数据集,它是时间和频率的函数。当我融化它时,我想保留实际的时间(日期)和频率值,因为我想用y轴作为频率,x轴作为时间的二维图。
我试图保留一列所需的轴值,但熔化使其成为因子,stat_contour抛出错误。
a = data.frame(date=time,power=power)
names(a) = c('date',period)
字符串
其中,周期为
[1] 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
[23] 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
[45] 8 8 8 8 8 8 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
[67] 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
[89] 16 16 16 16 16 16 16 16 16 16 16 16 32 32 32 32 32 32 32 32 32 32
[111] 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
[133] 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 64 64 64 64
[155] 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
[177] 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64
[199] 64 64 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
[221] 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
[243] 128 128 128 128 128 128 128 128 256
power = melt(a,id.vars = 'date')
date period power
1 850-01-01 8 0.05106766
2 851-01-01 8 0.05926821
3 852-01-01 8 0.06783015
4 853-01-01 8 0.07681627
5 854-01-01 8 0.08636516
6 855-01-01 8 0.09667054
ggplot(power, aes(x = date, y = period, z = power)) +
stat_contour()
这给出了一个错误,因为期间列是一个因子;如果我将其设置为数字,我会丢失确切的Y轴标签。
1条答案
按热度按时间deyfvvtc1#
原则上,您必须手动更改轴标签:
字符串
然而,我发现很难真正理解一个轴为定性的等高线图应该代表什么。我的猜测是,由于熔化操作,y轴是一个因子,并且有一些列被错误地指定为因子,因此整个列是一个因子,而实际上它应该是一个数值(也就是说,它显示8,应该代表8,但实际上是水平为8的因子)。
如果是这种情况,普通的
as.numeric
不会像预期的那样工作B/c它只是将第一个级别Map到1,第二个级别Map到2,依此类推。但是你希望它Map到字符串表示的数字。在这种情况下,应该这样做:型