matplotlib растровый график с векторным текстом

Итак, я рисую форму волны (и другие вещи), которые приводят к большему векторному файлу (PDF), чем соответствующий растровый файл (PNG). Я предполагаю, что это связано с тем, что построенный набор данных очень велик, и в векторном файле есть миллионы инструкций. Помимо того, что PDF-файл слишком большой, PDF-файл также довольно сложно отобразить. Для некоторых требуется несколько секунд для загрузки; на других он вообще не загружается.

В pyplot, возможно ли иметь растровый график с векторными осями, метками и всем остальным текстом?

Мое (очень плохое) решение на данный момент состоит в том, чтобы сгенерировать PDF, сгенерировать PNG, открыть PDF с помощью inkscape и заменить график на PNG. Очевидно, что это слишком ручная и очень трудоемкая, если вы понимаете, что вам нужно восстановить сюжет.

2 Solutions collect form web for “matplotlib растровый график с векторным текстом”

Это должно быть так же просто, как передать в rasterized=True команду plot .

Например

 import matplotlib.pyplot as plt plt.plot(range(10), rasterized=True) plt.savefig('test.pdf') 

Для меня это приводит к тому, что в формате pdf с растрированной линией (разрешение управляется с помощью dpi, указанного вами с помощью savefig по умолчанию оно savefig 100) и векторного текста.

Я использую грязное «исправление» для этой проблемы. Я просто делаю сюжет дважды. После удаления всех фреймов, заголовков и т. Д. И сохранения в виде png, а в другом случае я удаляю фактические данные и сохраняю все компоненты, которые я хочу в качестве векторных данных в pdf. Затем я использую ImageMagick для преобразования png в pdf-файл, содержащий растровые данные, и накладываю векторные данные из pdf с помощью pdftk. Вот пример pcolor на странице matplotlib, адаптированный так, как я только что описал.

 import matplotlib.pyplot as plt import numpy as np import os for case in ['frame','data']: # make these smaller to increase the resolution dx, dy = 0.02, 0.02 # generate 2 2d grids for the x & y bounds y, x = np.mgrid[slice(-3, 3 + dy, dy), slice(-3, 3 + dx, dx)] z = (1 - x / 2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) # x and y are bounds, so z should be the value *inside* those bounds. # Therefore, remove the last value from the z array. z = z[:-1, :-1] z_min, z_max = -np.abs(z).max(), np.abs(z).max() fig=plt.figure() ax=fig.add_subplot(1,1,1) im=plt.pcolor(x, y, z, cmap='RdBu', vmin=z_min, vmax=z_max) plt.title('pcolor') # set the limits of the plot to the limits of the data plt.axis([x.min(), x.max(), y.min(), y.max()]) if case is 'frame': im.remove() plt.savefig("frame.pdf",transparent=True) if case is 'data': ax.axison=False plt.title('') plt.savefig("data.png",transparent=True) os.system('convert data.png data.pdf') os.system('pdftk frame.pdf background data.pdf output final_plot.pdf') os.system('rm data.png data.pdf frame.pdf') 

В основном это просто автоматизированная версия того, что вы уже делаете …

  • Как построить эллипс по его уравнению на Python?
  • Ошибка Matplotlib / Pandas с использованием гистограммы
  • Анимированная 3d диаграмма рассеяния в matplotlib
  • Увеличьте разрешение с помощью словарного облака и удалите пустую рамку
  • Создание вращающейся трехмерной земли
  • Цвет линии 3D-параметрической кривой в matplotlib.pyplot на python
  • pcolormesh с замаскированными недопустимыми значениями
  • Есть ли функция для создания матриц рассеяния в matplotlib?
  • стек бар в matplotlib и добавить метку к каждому разделу (и предложения)
  • Добавить информацию в matplotlib Панель инструментов навигации / строка состояния?
  • Как сделать вафельные диаграммы в python? (квадратный пирог)
  •  
    Interesting Posts for Van-Lav

    Python 2.7 Преобразование Bitcoin Privkey в WIF Privkey

    Выбор случайных значений из словаря

    Проверьте, существует ли файл / Dir через SSH / Sudo в Python / Bash

    Python: cmd выполняет последнюю команду, пока строка приглашения и пустая строка

    Не удается отправить ключи на сайт с Selenium Python на Centos в Firefox

    Разве «не в в c» отличается от «e не в c» в Python?

    Невозможно использовать im.getcolors

    Что такое эквивалент Python статических переменных внутри функции?

    Почему сортировка списка кортежей python происходит быстрее, когда я явно предоставляю ключ в качестве первого элемента?

    Как сгенерировать комбинации списков?

    Приложение «Флажок» «Перезапуск со статусом»

    Как свернуть список в строку в python?

    загрузите zip-файл на локальный диск и извлеките все файлы в папку назначения с помощью python 2.5

    Разработка с Django + Celery без запуска `celeryd`?

    Как вы справляетесь с отсутствующими данными с помощью numpy / scipy?

    Python - лучший язык программирования в мире.