Как можно меньший размер маркера с помощью matplotlib.pyplot - PullRequest
2 голосов
/ 09 февраля 2020

Моя программа может генерировать до 2000000 точек в течение 5 секунд, поэтому у меня нет проблем со скоростью. Прямо сейчас я использую matplotlib.pyplot.scatter, чтобы рассеять все мои точки на моем графике. Для s=1 это дает мне маленькие круги, но не достаточно маленькие, потому что это не показывает запутанные образцы. Когда я использую s=0.1, это дает мне странную форму маркера:

enter image description here

, что делает маркер больше, несмотря на то, что я делаю размер меньше. Я искал по всему inte rnet, включая переполнение стека, но они не говорят, как уменьшить размер дальше. К сожалению, я должен показать все точки и не могу просто показать их случайную выборку.

Я пришел к выводу, что matplotlib создан для небольшой выборки точек и не предназначен для построения миллионов точек. , Однако, если возможно уменьшить размер, пожалуйста, дайте мне знать.

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

Спасибо за любую помощь заранее!


РЕДАКТИРОВАТЬ: мой код, который я использую для разброса точек:

plt.savefig(rootDir+"b"+str(Nvertices)+"_"+str(xscale)+"_"+str(yscale)+"_"+str(phi)+"_"+str(psi)+"_"+CurrentRun+"_color.png", dpi =600)

РЕДАКТИРОВАТЬ: я получил свой ответ, я добавил linewidths = 0, и это значительно уменьшило размер очков, давая мне то, что мне нужно.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2020

Возможно, вы можете попробовать сделать linewidths как 0, т.е. ширину линии краев маркера. Обратите внимание на разницу в двух графиках ниже

fig, ax = plt.subplots(figsize=(6, 4))
plt.scatter(np.random.rand(100000), np.random.rand(100000), s=0.1)

enter image description here

fig, ax = plt.subplots(figsize=(6, 4))
plt.scatter(np.random.rand(100000), np.random.rand(100000), s=0.1, linewidths=0)

enter image description here

1 голос
/ 09 февраля 2020

вы можете установить маркер на один пиксель, используя marker=',' в вашем вызове scatter.

См. Документацию по маркерам здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...