Получение дискретного значения в непрерывном масштабе при использовании ggplot - PullRequest
0 голосов
/ 29 июня 2019

У меня есть следующие данные:

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

Что я здесь не так делаю?

1 Ответ

2 голосов
/ 29 июня 2019

Мне повезло, используя jsonlite fromJSON:

l = jsonlite::fromJSON(l) 
ggplot(l,aes(y=features, x=value)) + 
  geom_point()

enter image description here

Редактировать:

Вотгистограмма.Обратите внимание, что здесь есть два «поисковых» значения, которые здесь по умолчанию сложены.

ggplot(l,aes(x=features, y=value)) + 
  geom_col(color = "white") + 
  coord_flip()

enter image description here

Или, если вы хотите их отсортировать, мне нравится forcats::fct_reorder;но обратите внимание, что это сортировка по отдельным значениям, а не по общим значениям;не был уверен, как вы хотите относиться к двум в «поиске»:

ggplot(l,aes(x=forcats::fct_reorder(features, value), y=value)) + 
  geom_col(color= "white") + coord_flip()

enter image description here

...