Вопрос или проблема
У меня есть текстовый файл, который я преобразовал в числовой вектор:
numbers <- scan("list_of_numbers.txt")
Затем я поместил его в таблицу:
t <- table(numbers)
Которая выводит следующий результат:
1 2 3 4 5 6 7 8 9 10 11
621266 496647 436229 394595 353249 305882 253983 199455 147380 102872 67255
12 13 14 15 16 17 18 19 20 21 22
41934 24506 13778 7179 3646 1778 816 436 217 114 74
23 24 25 26 27 28 29 30 31 32 33
49 44 26 21 19 21 20 14 9 17 14
34 35 36 37 38 39 40 41 42 43 44
7 11 9 14 3 5 8 4 4 2 3
45 46 47 55 56 60 62 63 69 70 72
2 1 2 2 2 1 1 1 3 2 1
78 82 85 93 95 114 125 265 331 350
1 1 1 1 1 1 1 1 1 1
Как я могу построить линейный график с осью x от 1 до 25 и с частотными значениями по оси y непосредственно в окне терминала?
Кроме того, как можно просмотреть такой график (который по умолчанию сохраняется в .pdf файл) в терминале Linux?
Большинство команд, таких как less, cat, и xdg-open, выводят кучу странных нечитаемых символов. Я работаю через ssh-сервер.
Вы хотите отображение в ASCII (т.е. в терминале)? График через X11? Выходное устройство имеет значение (так как R может строить графики на многих устройствах).
Если вы используете переадресацию X11 через ssh и у вас R в интерактивной сессии, тогда:
plot(t[1:24], type = "l")
должно открыть базовый линейный график в новом окне X11. Выполните ?plot
в R для получения дополнительных опций по настройке формата.
Вы можете специально задать вывод на X11, если это не сработает следующим образом:
x11(width = 8, height = 8)
plot(t[1:24], type = "l")
dev.off()
Если у вас не настроен X11 или переадресация, вы можете получить базовый график в-ASCII терминале с помощью функции txtplot
из пакета txtplot
.
Также существует устройство вывода в PDF в R, которое работает так же, как пример с X11 выше, но генерирует вывод в файл:
pdf(file = "filenameyoudesire.pdf", width = 8, height = 8)
plot(t[1:24], type = "l")
dev.off()
Существуют и другие методы построения и форматирования графиков, но этого должно быть достаточно для начала.
Также, несмотря на то что R достаточно умен, чтобы понять разницу, t
также является встроенным именем функции (выполните ?t
в R, чтобы узнать, что она делает), так что стоит избегать использования его в качестве имени переменной.
Ответ или решение
Для того чтобы построить график таблицы в R в терминале Linux, следуйте данным шагам. Вам необходимо построить график в терминальной среде и представить его в текстовом формате, поскольку стандартные утилиты, такие как less
, cat
, или xdg-open
, не могут открыть стандартные графические форматы.
Пошаговая инструкция:
Шаг 1: Установка необходимых R-пакетов
-
Убедитесь, что R установлен:
Откройте терминал и выполните командуR
для входа в интерактивную сессию R. -
Устанавливаем пакет txtplot:
install.packages("txtplot")
Шаг 2: Загрузка данных и построение графика
-
Считывание данных из файла:
numbers <- scan("list_of_numbers.txt")
-
Создание таблицы частот:
frequency_table <- table(numbers)
-
Построение ASCII-графика с помощью txtplot:
library(txtplot) txtplot(names(frequency_table)[1:24], frequency_table[1:24], xlab = "Числа", ylab = "Частота", type = "l")
Шаг 3: Дополнительные рекомендации
-
Используйте осмысленные имена переменных: Избегайте использования
t
как имени переменной, поскольку это может привести к путанице (в Rt()
– это функция для транспонирования). -
Установите X11 для графической визуализации:
Если у вас есть доступ к графической среде через X11, то используйте следующие команды для графической визуализации:x11(width = 8, height = 8) plot(frequency_table[1:24], type = "l") dev.off()
-
Печать в PDF:
Если ASCII-графика недостаточно или вы хотите сохранить результаты, создайте PDF-файл:pdf(file = "output.pdf", width = 8, height = 8) plot(frequency_table[1:24], type = "l") dev.off()
Заключение
Использование txtplot
позволяет визуализировать данные непосредственно в терминале в формате ASCII-графика, что особенно полезно в условиях работы через SSH на сервере без графического интерфейса. При более сложных задачах или для сохранения изображения для последующего анализа, графики можно сохранять в формате PDF.