#r #ggplot2
#r #ggplot2
Вопрос:
Мой код приведен ниже, где я должен ввести место для «x»? Также, как бы я это сделал, если бы я хотел отобразить несколько тикеров в одном файле, отображаемых в разных столбцах?
ggplot(portfolioprices,aes(x = , y = INO)) geom_line()
Вот как выглядят данные: Dataset
Я хочу, чтобы он выглядел так, но с метками: График, созданный с помощью R
Комментарии:
1.
ggplot(portfolioprices,aes(x = seq_along(INO), y = INO)) geom_line()
(или с использованиемseq_len(nrow(portfolioprices))
того же эффекта).
Ответ №1:
Получение доступа к вашим данным и типу графика, который вы собираетесь построить, облегчило мне понимание вашей цели, и теперь я думаю, что нашел решение для вашего вопроса. Попробуйте воспроизвести следующий код:
# load environment
library(lubridate)
library(ggplot2)
library(reshape2)
# define dataframe
df = data.frame(
date = c('1/3/2020', '1/6/2020', '1/7/2020', '1/8/2020', '1/9/2020'),
ino = c(2.98, 3.14, 3.15, 3.14, 3.1),
mrna = c(18.89, 18.13, 17.78, 17.98, 18.4),
nio = c(3.83, 3.68, 3.24, 3.39, 3.46),
fcntx = c(13.8, 13.92, 13.9, 14, 14.12)
)
# transform date strings to date class
df$date = dmy(df$date)
class(df$date)
# tidy the dataframe to plot it
df = melt(df, id.vars = 1, measure.vars = 2:5)
# plot the graph
ggplot(df, aes(x = date, y = value, colour = variable))
geom_line(size = 1.5)
scale_x_date(date_breaks = '1 month', date_labels = '%m/%Y')
Вот результат:
Дайте мне знать, тот ли это график, который вы ищете.
Комментарии:
1. вы можете отредактировать свой последний пост и добавить фрейм данных, который вы использовали для построения этих графиков. трудно воспроизвести вашу проблему без какого-либо фрейма данных..
2. Я пока не могу вставлять изображения, поэтому он создал ссылку, если вы можете взглянуть?
3. Это здорово @ShreddedScientist! Теперь я могу вам помочь. Я отредактировал свой последний ответ, проверьте его.
4. Как мне назначить заголовок даты столбцу даты, если в файле его нет? Данные, которые я извлекаю, поступают из файла CSV. Это мой код ниже, и в нем говорится об ошибке: Ошибка в
$<-.data.frame
(*tmp*
, дата, значение = числовое(0)) : замена имеет 0 строк, данные имеют 171 df = data.frame(portfolioprices) преобразование строк даты в класс date класс df$ date = dmy(df$ date) (df $ date) (df$ date)5.
df$date = dmy(df$date); class(df$date)
делает именно то, что вы хотите, он преобразует объекты ‘character’ в ‘date’. вам просто нужно установить библиотеку lubridate перед (с помощьюinstall.packages('lubridate')
), а затем загрузить библиотеку (с помощьюlibrary(lubridate)
)