【发布时间】:2019-06-29 16:09:00
【问题描述】:
我有以下数据:
library(rjson)
library(ggplot2)
l='[{"a": "abc", "date": "20190506","model": "honda", "features":"weather", "value": 10},
{"a": "abc", "date": "20190506","model": "honda", "features":"bad", "value": 14},
{"a": "abc", "date": "20190506","model": "honda", "features":"failure", "value": 20},
{"a": "abc", "date": "20190506","model": "honda", "features":"not", "value": 1},
{"a": "abc", "date": "20190506","model": "honda", "features":"search", "value": 24},
{"a": "abc", "date": "20190506","model": "honda", "features":"esrs", "value": 2},
{"a": "abc", "date": "20190506","model": "honda", "features":"issue", "value": 1},
{"a": "abc", "date": "20190506","model": "honda", "features":"errors", "value": 30},
{"a": "abc", "date": "20190510","model": "ford", "features":"ice", "value": 12},
{"a": "xyz", "date": "20190509", "model": "honda", "features":"summer", "value":18},
{"a": "xyz", "date": "20190507", "model": "ford", "features":"hot", "value":14},
{"a": "abc", "date": "20190506","model": "ford", "features":"search", "value": 20},
{"a": "abc", "date": "20190510","model": "honda", "features":"400", "value": 18},
{"a": "xyz", "date": "20190509", "model": "ford", "features":"fail", "value":24},
{"a": "xyz", "date": "20190507", "model": "honda", "features":"200", "value":15}]'
当我以数据框的形式使用这些数据来绘制特征和值之间的条形图时,使用以下代码:
l = fromJSON(l)
df = data.frame(do.call(rbind, l))
ggplot(df, aes(y=features, x=value))
我收到以下错误:
Error: Discrete value supplied to continuous scale
我在这里做错了什么?
【问题讨论】:
-
我没有运行你的代码,但我怀疑你所有的变量都是因素。如果这是真的,您应该在调用
ggplot之前将相应的转换为数字。您可以通过sapply(dat, class)进行检查,其中 dat 是您的 data.frame 的名称。 -
它显示每个变量的“列表”。
-
我是 R 新手。你能帮忙改变他们的班级吗?
-
看起来
fromJSON函数有一个简化参数。将此设置为 TRUE。然后,如果幸运的话,返回的对象将是一个字符向量列表。那么你的代码会导致我上面提到的因素情况。如果是,请使用dat$numVar <- as.numeric(dat$numVar)将 dat 和 numVar 替换为适当的名称,以将每个因子变量转换为数字。