Я пытаюсь переместить все мои данные хрустом в Rmarkdown вместо SPSS + Excel, но не могу понять, как создать таблицу с добавлением графика.Добавить диаграмму sparkline в таблицу
В Excel это можно сделать с инфокривой особенностью или, как я это делаю, просто создавая график и размещение его очень точно.
Таблица выше создана с использованием табличной функции из таблицы Таблицы (и Pander). И вставлен в Excel для создания графика (и заголовка для графа).
library(tables)
library(pander)
pander(#convert table to rmarkdown table
tabular(
(Species + 1) ~ (n=1) + Format(digits=2) *
(Sepal.Length + Sepal.Width) * (mean + sd),
data = iris),
caption = "Table 1. Iris") #Heading for table
Создал ли кто-нибудь подобное? Возможно, обходной путь с пакетом gridExtra, хотя я скептически отношусь к тому, что пакет может сопоставлять таблицу и график.
Редактировать - Мое решение до сих пор.
HTML закончен. На полпути с помощью pdf. Для документа я не думаю, что это возможно (скопировать в Excel).
HTML таблица
Во-первых, таким образом R знает, если я рендеринга HTML, PDF или документ. out_type принимает значения: «html», «pdf» и «docx». Я могу использовать этот объект в операторах if.
out_type <- knitr::opts_knit$get("rmarkdown.pandoc.to")
Теперь бары:
if(out_type == "html"){ #if output is html then:
my_table$Mean_Sepal_Length <- paste0(#I have a table saved as a dataframe. I add a column to it called Mean_Sepal_Length
"<span style=' width: 100%; display: flex;'><span style='display: inline-block; border-radius: 3px; padding-right: 0; background-color: #00457C; width:", #create the bar
MEAN_SEPAL_L_OBJECT, #set the with of the bar. I have an object with these proportions
"%; margin-right: 5px;'> </span><span>", MEAN_SEPAL_L_VARIABLE, "%</span></span>") #finally add the value behind the bar.
}
Это также можно иметь две колонки.
Здесь снова у меня есть таблица с пропорциями, у меня есть два объекта, которые имеют пропорции мужчин и женщин.
my_table$male_female <- paste0(
"<span style=' width: 100%; display: flex;'><span>", MALE_BAR, #the proportion of males
"%</span><span style='display: inline-block;border-top-left-radius: 3px; border-bottom-left-radius:3px; padding: 0; background-color: #00457C; width:", MALE_BAR, #width of the bar for males
"%; margin-left: 5px;'></span><span style='display: inline-block; border-top-right-radius: 3px; border-bottom-right-radius:3px; padding:0; background-color: #AC1A2F; width:",
FEMALE_BAR, #width of bar for females
"%;margin-right: 5px;'></span><span>", FEMALE_BAR, #proportion of females
"%</span></span>")
Конечно, вы можете также иметь номера внутри стержней, если хотите, но это проблема, когда бары маленькие.
PDF
я не получил, насколько с PDF. Вот мое решение до сих пор:
\begin{tabular}{>{$\rhd$ }lrl}
Loop at line 151 in divergence & \mybar{3.420}\\
Loop at line 1071 in radiation & \mybar{3.270}\\
scalar face value & \mybar{3.090}\\
Loop at line 102 in get & \mybar{1.700}\\
get sensible enthalpy & \mybar{1.250}\\
\end{tabular}
Это не выглядит так хорошо. Я очень новичок в латексе. Мне все еще нужно выяснить, как разместить номера за решеткой. И как включить это в оператор if в моей функции. Если HTML тогда: if pdf, то ...
Надеюсь, это поможет кому-то. Но, пожалуйста, рассмотрите пакеты, упомянутые в этой теме. Они превосходны, мое решение очень основано на них. Я просто не мог получить то, что искал с пакетами, поэтому сделал это вручную.
См https://github.com/htmlwidgets/sparkline – zx8754
Это очень крутой пакет/виджет. Как можно было бы добавить его в таблицу в rmarkdown, не составляя таблицу: в тексте, как показано на странице. Например, это не работает: 'Pander ( ddply (ирис, "вид", обобщать, N = длина (Sepal.Length), Среднее = Среднее (Sepal.Length, na.rm = Т), Sd = sd (Sepal.Length, na.rm = T), spark = sparkline (среднее значение)) ) ' –