При рисовании точек с очень близкими значениями иногда точки с разными значениями кажутся одинаковыми. На рисунке ниже все шесть точек имеют разные значения ординат, но кажется, что точки 2,3 и 4,5,6 имеют одинаковое значение.

Я знаю, что это проблема разрешения (которую я не могу увеличить по причинам, не указанным здесь). Тем не менее, есть ли возможность сказать matplotlib точнее нарисовать эти точки?

enter image description here

MWE :

import matplotlib
from matplotlib import pyplot as plt

coor = [[0.5,0.525,0.55,0.575,0.6,0.625],[0.5,0.501,0.502,0.503,0.504,0.505]]

fig = plt.figure(figsize=(3.5,3.5))
plts=fig.add_subplot(1,1,1)
fig.subplots_adjust(left=0.01, right=0.99, bottom=0.01, top=0.99, hspace=0, wspace=0)

plts.set_xlim([0,1])
plts.set_ylim([0,1])
plts.get_xaxis().set_visible(False)
plts.get_yaxis().set_visible(False)

grph = plts.scatter(coor[0],coor[1],facecolor='k',marker='o',lw=0,s=25)
fig.savefig('test.png', bbox_inches='tight', dpi=100)
3
Pygmalion 24 Апр 2017 в 16:32

2 ответа

Лучший ответ

Это на самом деле проблема алгоритма, которая появилась с mathlab версией 1.4. Подробности читайте здесь:

https://github.com/matplotlib/matplotlib/issues/8533

https://github.com/matplotlib/matplotlib/issues/7233

https://github.com/matplotlib/matplotlib/issues/7262

0
Pygmalion 25 Апр 2017 в 16:24

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

Конечно, вы можете увеличить dpi при сохранении изображения. Ниже приведено исходное изображение, сохраненное с разрешением 100 точек на дюйм, показывающее нежелательное поведение.

enter image description here

Ниже приведено изображение, сохраненное с разрешением 300 т / д, с последующим уменьшением выборки до того же размера, что и исходное изображение.

enter image description here

Если вы выбираете размер фигуры такой, что figsize*saved_dpi/desired_dpi == integer результат был бы еще лучше; но вам нужно будет воздержаться от использования bbox_inches='tight' тогда.

3
ImportanceOfBeingErnest 24 Апр 2017 в 15:34
43589568