У меня есть папка с временными сериями xx .csv, которую я хочу построить и связать в чистый документ HTML. У меня есть код ggplot, который создает график, который я хочу, используя один timeseries.csv. Однако, когда я пытаюсь поместить кости этого кода ggplot в функцию внутри a для l oop для запуска каждого из файлов timeseries.csv через функцию, я получаю несколько графиков с довольно различным форматированием.
График, сгенерированный с помощью моего тестового кода ggplot:
График, созданный с помощью функции и для l oop:
Изменения, которые я пытаюсь внести в уродливый сюжет Rmd:
- Приятно размещать отметки по оси X в целых минутах (т. Е. "11:14:00", "11:15:00 ")
- Соединить точки данных (решается с помощью подстановки
geom_line()
с geom_path()
)
Пример кода Rmd ниже. Пожалуйста, обратите внимание , что созданные графики все еще имеют хорошее форматирование, я не уверен, как воспроизвести эту проблему, вроде размещения 500-строчного фрейма данных. Я также не знаю, как опубликовать свой rmd-код без SO, используя команды форматирования в этом посте, поэтому я добавил 3 из "
вокруг моего форматирования заголовка и в конце кода, чтобы отключить его.
Редактирование и обновление
- Я получаю постоянную ошибку
geom_path: Each group consists of only one observation. Do you need to adjust the group
aesthetic?
. - По предложению комментаторов я попытался удалить plot () и использовать непосредственно createChlDiffPlot () и замена plot () на print (). Оба производят те же самые уродливые графики, что и раньше.
- Заменен geom_line () на geom_path (). Точки теперь связаны! Беспорядок на оси X все еще там.
- Переменная времени читается как
hms
num
Большое спасибо за любую помощь в этом!
```
---
title: "Chl Filtration"
output:
flexdashboard::flex_dashboard:
theme: yeti
orientation: rows
editor_options:
chunk_output_type: console
---
```{r setup}
library(flexdashboard)
library(dplyr)
library(ggplot2)
library(hms)
library(ggthemes)
library(readr)
library(data.table)
#### Example Data
df1 <- data.frame(Time = as_hms(c("11:22:33","11:22:34","11:22:35","11:22:38","11:23:00","11:23:01","11:23:02")),
Chl_ug_L_Up = c(0.2,0.1,0.25,-0.2,-0.3,-0.15,0.1),
Chl_ug_L_Down = c(0.5,0.4,0.3,0.2,0.1,0,-0.1))
df2 <- data.frame(Time = as_hms(c("08:02:33","08:02:34","08:02:35","08:02:40","08:02:42","08:02:43","08:02:49")),
Chl_ug_L_Up = c(-0.2,-0.1,-0.25,0.2,0.3,0.15,-0.1),
Chl_ug_L_Down = c(-0.1,0,0.1,0.2,0.3,0.4,0.1))
data_directory = "./" # data folder in R project folder in the real deal
output_directory = "./" # output graph directory in R project folder
write_csv(df1, file.path(data_directory, "SO_example_df1.csv"))
write_csv(df2, file.path(data_directory, "SO_example_df2.csv"))
#### Function to create graphs
createChlDiffPlot = function(aTimeSeriesFile, aFileName, aGraphOutputDirectory, aType)
{
aFile_Mod = aTimeSeriesFile %<>%
select(Time, Chl_ug_L_Up, Chl_ug_L_Down) %>%
mutate(Chl_diff = Chl_ug_L_Up - Chl_ug_L_Down)
one_plot = ggplot(data = aFile_Mod, aes(x = Time, y = Chl_diff)) + # tried adding 'group = 1' in aes to connect points
geom_path(size = 1, color = "green") +
geom_point(color = "green") +
theme_gdocs() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.title = element_blank()) +
labs(x = "", y = "Chl Difference", title = paste0(aFileName, " - ", "Filtration"))
one_graph_name = paste0(gsub(".csv", "", aFileName), "_", aType, ".pdf")
ggsave(one_graph_name, one_plot, dpi = 600, width = 7, height = 5, units = "in", device = "pdf", aGraphOutputDirectory)
return(one_plot)
}
"``` ### remove the quotes when running example
Plots - After Velocity Adjustment
=====================================" ### remove quotes when running example
```{r, fig.width=13.5, fig.height=5}
all_files_Filtration = list.files(data_directory, pattern = ".csv")
# Loop to plot function
for(file in 1 : length(all_files_Filtration))
{
file_name = all_files_Filtration[file]
one_file = fread(file.path(data_directory, file_name))
# plot the time series agains
plot(createChlDiffPlot(one_file, file_name, output_directory, "Velocity_Paired"))
}
"``` #remove quotes when running example
```