Краткое руководство, как использовать gnuplot с python?

Я пытаюсь нарисовать график на Python, используя Gnuplot. Мне трудно найти какое-либо руководство/учебники, как начать.

Что меня интересует: какие файлы/программы необходимы? (я использую Ubuntu), с чего начать?

Если кто-то может порекомендовать хороший учебник, это было бы очень признательно!

Спасибо!


person Fredrik Nylund    schedule 10.11.2011    source источник
comment
Здравствуйте, у меня была такая же проблема в прошлом. Я нашел matplotlib более простым в использовании. Взгляните: matplotlib.sourceforge.net Я думаю, это довольно удивительно, и вы найдете там множество примеров. Кнопка загрузки находится справа   -  person BuZz    schedule 10.11.2011


Ответы (4)


Вы можете попробовать gnuplot.py. Это интерфейс к gnuplot, который я использовал в прошлом. На веб-сайте у вас есть некоторые указания, а в дистрибутиве есть несколько примеров скриптов.

На самом деле очень легко запустить gnuplot напрямую из python. Исходный код gnuplot.py даст вам ценные подсказки. См. также здесь и здесь для других альтернатив.

Как и другие, альтернативой является использование matplotlib. Matplotlib великолепен, и я использую его в качестве основной библиотеки визуализации. Недостатком является то, что работа с большим количеством данных может стать медленной. gnuplot в этом случае — хороший вариант.

person joaquin    schedule 10.11.2011

Ваш подход зависит от того, что у вас уже есть и с чем вы хотите работать. Чтобы построить график с помощью gnuplot, вам нужны две вещи:

  1. Скрипт gnuplot, описывающий, как должен выглядеть результирующий график (заголовок, описание оси, легенда...)
  2. Файл данных, который содержит данные, которые вы хотите построить

Если у вас уже есть, скажем, файл сценария gnuplot, и вы просто хотите написать новые файлы данных с помощью python, тогда этот подход подходит для моего варианта. Просто экспортируйте данные в указанный формат, который вы использовали в своих файлах данных ранее, и запустите gnuplot изнутри python с чем-то вроде

import os
import subprocess
p = subprocess.Popen("gnuplot <scriptname>", shell = True)
os.waitpid(p.pid, 0)

Не забывайте, что вам, возможно, придется изменить путь к файлу данных в вашем скрипте gnuplot, если вы записываете новые файлы данных. Что-то вроде этого:

plot "<path>" ...

Если у вас еще нет скрипта gnuplot, который вы хотите использовать, вы определенно можете написать его и использовать с этого момента, но при использовании python есть и другие альтернативы.

Вы можете взглянуть на matplotlib, которая представляет собой библиотеку для построения графиков, очень похожую на Matlab использует команду plot. Он очень хорошо документирован, и в Интернете есть множество руководств и примеров, из которых вы можете учиться и работать.

person Woltan    schedule 10.11.2011

Как поклонник gnuplot, я использую эту оболочку gnuplot https://github.com/mzechmeister/python/wiki/gplot.py.

Вот демонстрационный фрагмент

from gplot import *

gplot.term('wxt')
gplot.title('"gplot.py"').grid()
gplot.xlabel('"time"')
gplot([1,2,0,4,3.5], 'w l, sin(x), "<seq 10" us 1:(cos($1))')

person Friedrich    schedule 11.03.2020

примерно 10 лет спустя позвольте мне обратить внимание на autogpy or Autognuplotpy.

Autogpy нацелен на полное создание скриптов gnuplot (и соответствующих дампов данных) из python.

Например, код Python

import autogpy
import numpy as np

xx = np.linspace(0,6,100)
yy = np.sin(xx)
zz = np.cos(xx)

with autogpy.AutogpyFigure("test_figure") as figure: 

    # gnuplot-like syntax
    figure.plot(r'with lines t "sin"',xx,yy)
    
    # matplotlib-like syntax
    figure.plot(xx,zz,u='1:2',w='lines',label='cos')

генерирует скрипт gnuplot

set terminal epslatex size 9.9cm,8.cm color colortext standalone      'phv,12 '  linewidth 2
set output 'fig.latex.nice/plot_out.tex'

p "fig__0__.dat" with lines t "sin",\
"fig__1__.dat" u 1:2 with lines t "cos" 

и сбрасывает читаемые данные.

Поддерживает латекс, тиксы и терминал png, но может быть легко расширен до большего.

Отказ от ответственности: я автор.

person Acorbe    schedule 25.10.2020
comment
Когда я пытаюсь использовать это, я не вижу никаких графиков? @Акорбе - person Noah P; 28.10.2020
comment
@NoahP, спасибо за ваш пост. разрешили ли вы imagemagick выполнять преобразования ` sudo sed -i '/PDF/s/none/read|write/' /etc/ImageMagick-6/policy.xml `? если это не решит проблему, не могли бы вы опубликовать свою проблему на github? с более подробной информацией? github.com/acorbe/autogpy спасибо - person Acorbe; 28.10.2020