автоматизируйте gnuplot, выводящийся на печать с ударом

На недавнем дистрибутиве Linux ядро должно обеспечить физический размер сектора устройства, и partition/lvm/mkfs инструменты должны, автоматически выбрал выравнивание, таким образом, что это совместимо с физическим размером сектора (для лучшей производительности).

Например, в моей системе Debian:

# cat /sys/block/sdb/queue/physical_block_size
4096
# cat  /sys/block/sdb/queue/logical_block_size
512

Обновление: Для проверки на поддержку ядра можно проверить если /sys содержит упомянутые файлы, можно звонить fdisk -l чтобы проверить, печатает ли это эту информацию (это должно), можно проверить спецификацию жесткого диска (доступный поставщиком), можно проверить журнал изменений и/или источник инструментов LVM. Большинство mkfs команды предоставляют подробную возможность видеть, какой размер блока используется. Наконец, что не менее важно, можно просто сделать простой сравнительный тест - например, один без любого LVM (например, целый диск как устройство) и повторить его, когда установка LVM существует.

11
19.03.2012, 01:39
3 ответа

Если я понимаю правильно, это - то, что Вы хотите:

for FILE in *; do
    gnuplot <<- EOF
        set xlabel "Label"
        set ylabel "Label2"
        set title "Graph title"   
        set term png
        set output "${FILE}.png"
        plot "${FILE}" using 1:2:3:4 with errorbars
EOF
done

Это предполагает, что Ваши файлы - все в текущем каталоге. Вышеупомянутое является сценарием удара, который генерирует Ваши графики. Лично, я обычно пишу, gnuplot командный файл (назовите его, скажем, gnuplot_in), с помощью сценария некоторой формы, с вышеупомянутыми командами для каждого файла и графика это использование gnuplot < gnuplot_in.

Дать Вам пример, в Python:

#!/usr/bin/env python3
import glob
commands=open("gnuplot_in", 'w')
print("""set xlabel "Label"
set ylabel "Label2"
set term png""", file=commands)

for datafile in glob.iglob("Your_file_glob_pattern"):
    # Here, you can tweak the output png file name.
    print('set output "{output}.png"'.format( output=datafile ), file=commands )
    print('plot "{file_name}" using 1:2:3:4 with errorbars title "Graph title"'.format( file_name = datafile ), file=commands)

commands.close()

где Your_file_glob_pattern что-то, что описывает именование Ваших файлов данных, быть этим * или *dat. Вместо glob модуль, можно использовать os также, конечно. Независимо от того, что генерирует список имен файлов, действительно.

14
27.01.2020, 19:58
  • 1
    Ваш комментарий в Вашем ответе является более чистым решением, почему бы не развернуть ответ для показа примера. +1 –  bsd 18.03.2012, 15:32
  • 2
    Ваш комментарий в Вашем ответе является более чистым решением, почему бы не развернуть ответ для показа примера. +1 –  bsd 18.03.2012, 15:32
  • 3
    спасибо за комментарий. Я просто делал это, когда Вы прокомментировали сообщение. –  Wojtek Rzepala 18.03.2012, 15:45

Решение Bash, использующее временный командный файл:

echo > gnuplot.in 
for FILE in *; do
    echo "set xlabel \"Label\"" >> gnuplot.in
    echo "set ylabel \"Label2\"" >> gnuplot.in
    echo "set term png" >> gnuplot.in
    echo "set output \"${FILE}.png\" >> gnuplot.in
    echo "plot \"${FILE}\" using 1:2:3:4 with errorbars title \"Graph title\"" >> gnuplot.in
done
gnuplot gnuplot.in
0
27.01.2020, 19:58

Это может помочь.

#set terminal postfile       (These commented lines would be used to )
#set output  "d1_plot.ps"    (generate a postscript file.            )
set title "Energy vs. Time for Sample Data"
set xlabel "Time"
set ylabel "Energy"
plot "d1.dat" with lines
pause -1 "Hit any key to continue"

Выполните файл сценария как gnuplot filename.

Щелкните здесь, чтобы получить более подробную информацию.

1
27.01.2020, 19:58

Теги

Похожие вопросы