График Python:Как я могу заставить matplotlib.pyplot перестать навязывать стиль моих маркеров?

StackOverflow https://stackoverflow.com/questions/544542

  •  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 и внешнего преобразования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top