Как экспортировать таблицу в формате PNG из фрейма данных с округленными цифрами - PullRequest
1 голос
/ 08 июля 2019

У меня много фреймов данных, таких как df с несколькими столбцами и строками.Из-за этого я искал что-то, чтобы писать свои таблицы напрямую в виде файлов pngПоэтому мне не нужно самостоятельно создавать все таблицы в другой программе.

df <- structure(c(1.688, 2.402, 2.636, 2.656, 2.8, 2.337, 0.261, 0.3, 
0.299, -0.158, -0.79, -0.115, 2.196, 3.067, 3.31, 3.437, 3.526, 
3.012, 1.895, 2.643, 3.31, 3.085, 3.07, 2.735), .Dim = c(6L, 
4L), .Dimnames = list(c("U", "V", "W", "X", "Y", "Z"), c("A", 
"B", "C", "D")))

Я прочитал кое-что о grid.table (пакет gridExtra) и htmlTable (пакет htmlTable)), и я также попытался сделать некоторые коды, которые уже обсуждались на SO.В моем случае я еще не нашел решения.Предварительно обе функции действительно работают.

grid.table(df)
htmlTable(df)

В моем случае и в большинстве научных работ цифры должны быть одинаковыми во всей таблице.Таким образом, 0.300 должен быть записан как 0.300, а не 0.3.Насколько я знаю, обе функции не включают функцию round или digits.

С помощью кода @jay.sf я мог бы решить проблему округленных цифр.

df <- apply(df, 1:2, formatC, format="f", digits=3)  # format digits

pdf("df.pdf", height = 12, width = 10)
grid.table(df)
dev.off()

Итак, я нашел свою таблицу со своими значениями округленнымина 3 цифры .Дополнительное название было бы хорошо, но не является абсолютно необходимым.

Заранее спасибо!

1 Ответ

1 голос
/ 09 июля 2019

Существует способ нанесения изображения на объект.

df <- apply(df, 1:2, formatC, format="f", digits=3)  # format digits

# Helper sequences    
sy <- seq(.9, 0, length.out=nrow(df))
sx <- seq(0.1, 1, length.out=ncol(df))
adj <- .03  # for adjustment

png(width=600, height=400, res=100)

par(mar=c(2, 2, 4, 2) + 0.1)
plot.new()  # initialize plot
# plot column names
sapply(seq(ncol(df)), function(x) 
  text(sx[x] - adj, 1 + adj, colnames(df)[x], font=2, xpd=TRUE))
# plot row names
sapply(seq(nrow(df)), function(x) 
  text(0 - adj, sy[x], rownames(df)[x], font=2, xpd=TRUE))
# plot values
mapply(function(x, y) text(sx[x], sy[y], labels=df[y, x]), 
       rep(seq(ncol(df)), each=nrow(df)), rep(seq(nrow(df)), ncol(df)))
# plot title
text(-.05, 1.2, "Good additional title here", xpd=TRUE, cex=1.5, font=2, adj=0)

dev.off()

Произведенный PNG:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...