2016-12-12 7 views
1

Учитывая следующее:Matplotlib земли пунктирной Круги (с использованием plt.plot вместо plt.scatter)

import matplotlib.pyplot as plt 
import numpy as np 
#http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter 
x = np.random.randn(60) 
y = np.random.randn(60) 
x2 = np.random.randn(60) 
y2 = np.random.randn(60) 

plt.plot(x, y, marker='o', markeredgecolor='r', linestyle='none', markerfacecolor='none') 
plt.plot(x2, y2, marker='o', markeredgecolor='r', linestyle='none', markerfacecolor='none') 
plt.show() 

Я хотел бы, x2 и y2 быть нанесена в виде пунктирной (или даже пунктирные) кругов. Я избегаю использования plt.scatter, потому что остальная часть моего скрипта работает с plt.plot намного лучше. Вот что я ищу: enter image description here

Заранее благодарен!

FYI: Вот фактический график, который я создал. Я просто использовал шестиугольники, чтобы теперь обозначать разные данные (будущие данные).

enter image description here

Обычай легенда и построение более групп строк в кадре данных панд добавить уровни сложности, что я не мог преодолеть с plt.scatter.

+1

Для этого вам необходимо передать экземпляр ['Path'] (http://matplotlib.org/api/path_api.html#path) в качестве маркера. Я не нашел способ сделать пунктирный круг. Возможно, это невозможно, 'scatter' использует дополнительные свойства' PathCollection' для краев маркера. Я бы сказал, что если вы хотите построить так много кругов, что производительность является проблемой, тогда пунктирные края - это не лучший способ рассказать о некоторых из них. Цвет, размеры или формы будут работать намного лучше. – Goyo

+0

Можете ли вы прокомментировать, почему использование разброса - такая большая проблема? – ImportanceOfBeingErnest

+0

Несомненно. Я повторяю через список для построения точек из разных строк фрейма данных. Данные каждой строки окрашены в соответствии со списком цветов (хотя это скоро изменится на цветовую карту). Затем я создаю пользовательскую легенду. Есть много зависимостей, и я не уверен, что они будут работать с plt.scatter. См. Обновленный вопрос для моего примера. –

ответ

2

Вы можете использовать пунктирный круг (ur'$\u25CC$') из STIX шрифта (PDF со всеми символами here) с использованием mathtext functionality

plt.plot(x, y, marker=ur'$\u25CC$', markerfacecolor='r', 
       markeredgecolor='r', markersize=30, linestyle='none',) 

Обратите внимание, что markerfacecolor установлен на цвет, а также.

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

+0

Ничего себе !!!!!!!!!!!! –

+0

'marker = u '$ \ u25CC $' 'работал для меня – NRH