График Python:Как я могу заставить matplotlib.pyplot перестать навязывать стиль моих маркеров?
-
23-08-2019 - |
Вопрос
Я пытаюсь построить кучу точек данных (многие тысячи) в Python, используя matplotlib поэтому мне нужно, чтобы каждый маркер был очень маленьким и точным.Как мне получить самый маленький и простой маркер?Я использую эту команду для построения своих данных:
matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')
Тогда я могу посмотреть на это либо с помощью pl.show()
а затем сохраните его.Или напрямую использовать plt.savefig('filename.ps')
в коде, чтобы сохранить его.Проблема в следующем:когда я использую pl.show()
для просмотра файла в графическом интерфейсе он выглядит великолепно с маленькими черными метками, однако, когда я сохраняю из show()
GUI в файл или использовать напрямую savefig
а затем просмотрите ps
Я создал, он выглядит по-другому!Вокруг каждого маркера появился небольшой синий ореол (как будто в каждой точке он начал соединять их с синими линиями по умолчанию, но этого не произошло), а стиль совершенно неправильный.Почему при сохранении меняется стиль?Как мне запретить Python навязывать стиль маркеров?И да, я рассмотрел некоторые альтернативные пакеты, такие как КаирСюжет, но я хочу пока продолжать использовать matplotlib.
Обновлять: Оказывается, сохранение в PNG сначала приводит к тому, что цвета получаются нормальными, но это приводит к принудительному преобразованию изображения, когда я хочу снова сохранить его как .ps
позже (для включения в PDF), а затем я теряю качество.Как сохранить векторную природу файла и получить правильное форматирование?
Решение
Для получения красивого векторизованного вывода не используйте '.'
стиль маркера.Используйте, например. 'o'
(круг) или 's'
(квадрат) (см. help(plot)
для опций) и установите markersize
аргумент ключевого слова на что-то достаточно маленькое, например:
plot(x, y, 'ko', markersize=2)
savefig('foo.ps')
Что '.'
(точка) дает менее хорошие результаты, это можно истолковать как ошибку в matplotlib, но тогда что должен «точка» означает в векторном графическом формате?
Другие советы
Вы пробовали ','
форма точки?Это создает "пиксели» (маленькие точки вместо фигур).
Вы можете играть с markersize
вариант тоже с такой формой?
Если вы этого не сделали, попробуйте сохранить в механизме растеризации — сохраните его в файл PNG и посмотрите, исправит ли это.Если вам нужен векторный график, попробуйте сохранить его в PDF и преобразовать с помощью внешней утилиты.Раньше у меня также были проблемы с движком PS, которые решались путем сохранения с помощью движков Agg или PDF и внешнего преобразования.