Экспорт графика с полными данными или сохранение в виде скрипта - PullRequest
3 голосов
/ 04 января 2012

Я использую python с matplotlib для создания графиков из данных, и я хотел бы сохранить эти графики в pdf-файле (но я мог бы использовать и более конкретный формат).Я использую в основном следующие инструкции:

plt.plot(data)
figname = ''.join([filename, '_', label, '.pdf'])
plt.savefig(figname)

Но для этого нужно создать изображение графика с масштабом, в котором он отображается;Я хотел бы создать копию, которая показывает все точки (> 10000), которые я строю, чтобы я мог масштабировать до любого уровня.Какой правильный способ сделать это?

РЕДАКТИРОВАТЬ: есть ли такой формат (например, '.fig' для Matlab), который напрямую вызывает средство просмотра Matplotlib с данными, которые я сохранил?Может быть, можно создать сценарий .py, который сохраняет точки и которые я могу вызвать, чтобы быстро отобразить их заново?Я думаю, что это то, что делает файл .fig Matlab.

This is the detail of the plot exported as pdf

And this is what I would like to obtain, still being able to see the whole plot, that is bigger

Ответы [ 2 ]

1 голос
/ 05 января 2012

Я не знаю ни одного родного формата файлов Matplotlib, который включает ваши данные;на самом деле, я не уверен, что у объектов Matploblib даже есть определенная функция записи.

Вместо этого я имитирую концепцию Matlab .fig, чтобы сохранить обработанные данные (в виде массива numpy или в виде маринованного).и запустите отдельный скрипт .py, чтобы воссоздать графики Matplotlib.

Итак, пошагово:

  1. Обработайте ваши данные и создайте несколько симпатичных графиков, пока вы не полностью наполнитесь
  2. Сохраните / выберите ваши обработанные данные как можно ближе к командам графика (вы можете даже захотеть сохранить данные, входящие в гистограмму, если создание гистограммы занимает много времени)
  3. Напишите новый скрипт, в котором выимпортировать данные и копировать / вставлять команды построения из оригинального сценария

Это немного неуклюже, но работает.Если вы действительно хотите, вы можете встроить выбранные данные в виде строки в свой сценарий построения графиков ( Вставить сборочные (или произвольные) данные в сценарий Python ).Это дает вам преимущество работы с одним скриптом Python, содержащим как данные, так и код печати. ​​

Редактировать

Вы можете проверить наличие сохраненного файла обработанных данных и пропуститьшаги обработки, если этот файл существует.Итак:

if not processed_data.file exists:
   my_data = process_raw_data()
else:
   my_data = read_data_from_file(processed_data.file)

plot(my_data)

Таким образом, вы можете иметь один сценарий как для создания графика в первую очередь, так и для повторного построения графика с использованием предварительно обработанных данных.

Вы можетехотите добавить аргумент времени выполнения для принудительной повторной обработки данных в случае, если вы что-то измените в сценарии обработки и не хотите вручную удалять файл обработанных данных.

1 голос
/ 04 января 2012

Используйте plt.xlim и plt.ylim для установки домена и диапазона. Установите figsize, чтобы косвенно контролировать разрешение в пикселях конечного изображения. (figsize устанавливает размер рисунка в дюймах; по умолчанию dpi равен 100.) Вы также можете контролировать dpi в вызове на plt.savefig.

С figsize = (10, 10) и dpi = 100 изображение будет иметь разрешение 1000x1000.


Например,

import matplotlib.pyplot as plt
import numpy as np

x, y = np.random.random((2,10000))
plt.plot(x, y, ',')
figname = '/tmp/test.pdf'
xmin, xmax = 0, 1
ymin, ymax = 0, 1
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
plt.savefig(figname)

Ваш просмотрщик PDF должен иметь возможность масштабировать любой регион, чтобы можно было различать отдельные точки.

...