我必须在R中绘制一个条形图。以下是数据
mime_doc$FREQ_PCNT
[1] 97.89 10.19 1.34 3.50 5.01 0.02 0.00 0.04
> mime_doc$BYTE_PCNT
[1] 90.72 19.82 0.70 5.64 0.05 0.04 0.01 0.01
以下是barplot的命令
mime_freq = data.frame(mime_doc$FREQ_PCNT, mime_doc$BYTE_PCNT)
barplot(t(mime_freq), beside = TRUE, col = c('blue','red') log = 'y')
它出现以下错误
Error in barplot.default(mime_doc$FREQ_PCNT, beside = TRUE, col = c("blue", :
log scale error: at least one 'height + offset' value <= 0
问题出在哪里?
答案 0 :(得分:1)
mime_doc$FREQ_PCNT
的第七个值为零,因此在对数刻度上绘图没有意义。你可以通过几种方式解决这个问题。
mime_doc<- data.frame(FREQ_PCNT=c(97.89, 10.19, 1.34, 3.50, 5.01, 0.02, NA, 0.04),
BYTE_PCNT=c(90.72, 19.82, 0.70, 5.64, 0.05, 0.04, 0.01 , 0.01))
mime_freq = data.frame(mime_doc$FREQ_PCNT, mime_doc$BYTE_PCNT)
barplot(t(mime_freq), beside = TRUE, col = c('blue','red'), log = 'y')
现在你没有得到零值的标准,这似乎是最明智的可视化方式,但这可能取决于你想用图表传达的内容。
mime_doc<- data.frame(FREQ_PCNT=c(97.89, 10.19, 1.34, 3.50, 5.01, 0.02, 0.00, 0.04),
BYTE_PCNT=c(90.72, 19.82, 0.70, 5.64, 0.05, 0.04, 0.01 , 0.01))
mime_freq = data.frame(mime_doc$FREQ_PCNT, mime_doc$BYTE_PCNT)
barplot(t(mime_freq), beside = TRUE, col = c('blue','red'), log = 'y', offset=0.0001)
这种方法的缺点是偏移的选择是任意的,并且会对绘图的整体缩放产生影响。偏移量应远小于最小非零值,以避免扭曲图形。
有关偏移的工作原理,请参阅?boxplot