Я работаю над программой R Shiny, которая может принимать любой файл csv и выводить его графики. Пользователь, который загружает csv, имеет некоторые рекомендации о том, как должны выглядеть данные, но я не хочу, чтобы они были слишком строгими.
В настоящее время я пытаюсь использовать ggplot2 для построения нескольких строк одного и того же набора данных на одном графике для сравнения.
Данные, которые я сейчас загружаю, выглядят следующим образом (упрощенно, поскольку данные содержат более 1000 строк):
Date Hamburgers Salads Sodas Fries
12-01 4 4 3 2
12-02 1 7 3 9
12-03 22 24 45 34
12-04 23 44 46 22
Я пытаюсь вывести график, на котором время отображается по оси X (пользователь выбирает это через боковую панель, так как он может выбрать любую ось, но время имеет здесь наибольший смысл). Для оси Y мне нужны 4 линии, окрашенные по-разному, на графике каждой переменной с течением времени.
У меня есть все, что `` пользователь принимает ввод и выбирает столбцы для графического отображения '', но для простоты мы можем предположить, что по большей части это было жестко закодировано (поэтому переменная Y фактически будет входить в $ y и т. Д. в моей реализации)
Часть моего кода, в которой я пытаюсь построить график данных:
output$plotLine <- renderPlot({
p <- ggplot(data, aes_string(x=X, y=Y), environment = environment())
p <- p + geom_point(size = 3)
p <- p + geom_line(aes(group=1))
print(p)
})
Это рисует одну из линий, но я понятия не имею, как построить другие на том же участке. Я читал об использовании 'group' в функции aes, но это зависит от наличия классификатора в наборе данных, которого в настоящее время нет.
Я также изучил функцию melt () из пакета reshape2, но не уверен, как она мне поможет (как для многострочной проблемы, так и для большего смысла этого проекта, так что пользователю не нужно соблюдать строгие правила). правила для формата загрузки csv).
Любая помощь приветствуется!
we can assume that for the most part, this has been hard coded (so Y variable will actually be input$y, etc in my implementation)
? Как это согласуется с наличием нескольких возможных столбцов в качестве переменной Y? Я думаю, вам следует сделать шаг назад и подумать, как лучше всего преобразовать входные данные в форму, которую вы можете легко построить. Насчет отсутствия строгих правил для csv Что вы имеете в виду? Должны быть какие-то определения. Как вы собираетесь анализировать столбец даты («12 -01» - это не дата, и определенно не однозначно%m-%d
,%y-%m
или просто идентификатор? - person mnel   schedule 01.08.2013Y
на самом деле будетinput$y
, в сочетании с подозрительным присутствиемenvironment()
, говорит мне, что вы уже прошли довольно большой путь по ложному пути. Использованиеmelt
здесь (по сути) неизбежно, и я предполагаю, что именно здесь вы передадите своим пользователям выбор конкретных столбцов. - person joran   schedule 01.08.2013