Я должен построить гистограмму в логарифмической шкале на обеих осях, используя gnuplot. Мне нужно, чтобы ячейки были одинаково расположены в log10. Использование логарифмической шкалы на оси y не является проблемой. Основная проблема заключается в создании бункера по оси x. Например, используя 10 бункеров в log10, первые ячейки будут [1], [2], [3] .... [10-19] [20 - 29] ..... [100 190] и т. Д. , Я искал в сети, но я не нашел никакого практического решения. Если реализовать его в gnuplot слишком сложно, вы можете предложить другое программное обеспечение/язык для этого?
Поскольку кто-то спросил, я объясню более конкретно то, что мне нужно сделать. У меня есть (огромный) список:
1 14000000
2 7000000
3 6500000
.
.
.
.
6600 1
8900 1
15000 1
19000 1
Это показывает, например, что 14 миллионов IP-адресов отправили 1 пакет, 7 milions 2 пакета .... 1 ip-адрес отправил 6600 пакетов, ..., 1 ip-адрес отправил 19000 пакетов. Поскольку вы можете видеть, что значения на обеих осях довольно высокие, поэтому я не могу построить его без логарифмической шкалы.
Первые вещи, которые я пробовал, потому что мне нужно было сделать это быстро, составляли этот список, как и с gnuplot, устанавливающим logscale на обе оси с помощью ящиков. Результат понятен, но не слишком уместен. Фактически, коробки становились все более тонкими, идущими прямо по оси x, потому что, очевидно, в 10-100 точек больше, чем в 1-10! Таким образом, это стало настоящим беспорядком после второго десятилетия.
Я попытался построить гистограмму с обеими осями, логарифмически масштабированными и gnuplot через ошибку
Log scale on X is incompatible with histogram plots
.
Таким образом, похоже, что gnuplot не поддерживает масштаб журнала по оси x с гистограммами.
Построение графика в лог-лог-шкале в GnuPlot отлично выполнимо в отличие от другого сообщения в этом потоке.
Можно установить шкалу log-log в GnuPlot с помощью команды set logscale
.
Тогда предположение состоит в том, что мы имеем файл с положительными (строго ненулевыми) значениями как по оси х, так и по оси y. Например, следующий файл является допустимым файлом:
1 0.5
2 0.2
3 0.15
4 0.05
После установки шкалы логарифмического журнала можно построить файл с помощью команды:
plot "file.txt" w p
где, конечно, file.txt - это имя файла. Эта команда будет генерировать вывод с точками.
Обратите также внимание на то, что построение ящиков является сложным и, вероятно, не рекомендуется. Сначала нужно ограничить область x командой с помощью команды set xrange [1: 4]
и только потом построить с полями. В противном случае, когда x-диапазон не определен, возвращается ошибка. Я предполагаю, что в этом случае для построения графика требуются (для соответствующих значений х), чтобы иметь размер log (0), который, конечно, не определен и, следовательно, возвращается ошибка.
Надеюсь, это ясно, и это также поможет другим.
Вы пробовали Matplotlib с Python ? Matplotlib - действительно хорошая библиотека построения графиков, и при использовании с простым синтаксисом Python вы можете легко создавать сюжеты:
import matplotlib.pyplot as plot
figure = plot.figure()
axis = figure.add_subplot(1 ,1, 1)
axis.set_yscale('log')
# Rest of plotting code