Я пытаюсь сделать что-то якобы простое: создать изображение тепловой карты (то есть 2D-гистограммы) с указанными попиксельными размерами (3600x3600) без полей или меток осей вообще .
Я могу успешно создать матрицу своих данных с помощью функции hist2d. Однако, когда я строю график, используя следующий код, я получаю файл изображения, который действительно имеет размер 3600x3600, но на самом деле содержит отметки по осям X и Y и некоторые пробелы по краям. Досадно, что этот пробел не является изотропным - с разных сторон его различное количество, поэтому я не могу просто сделать исходное изображение немного больше, прочитать его в PhotoShop и обрезать до 3600x3600, чтобы охватить только сюжет пиксели области (хотя это будет трудоемко).
par(mar=c(0,0,0,0)) # this *should* eliminate all margins, leaving only the plot area... right?
png("filename.png", w=3600, h=3600)
image(my_matrix, col=heat.colors(16))
dev.off()
Странно, но эти ярлыки и пробелы не появляются, если я просто нанесу изображение в кварцевом окне (я на MacBook Pro, к вашему сведению):
image(my_matrix, col=heat.colors(16)) # opens new window that looks perfect!
Это бы хорошо работало, но я не могу (насколько я знаю) указать размер этого графика в пикселях , просто в дюймах (через пин-код). Поэтому я не могу просто сохранить это окно графика, чтобы получить точный PNG, который я хочу.
Я уже потратил несколько дней на это и никуда не денусь. Любая помощь? Есть ли какая-то странность в том, как параметр par (mar) взаимодействует с определенными «устройствами» печати или что-то в этом роде? ...