Python (3.4.2) Как построить двумерный массив с заданным радиусом в виде круга?

  from matplotlib.pyplot import *

Например, у меня есть 2D-массив, хранящийся под именем переменной: «R»:

 ([[ 0.680979  ,  0.8126483 ],
   [ 0.4634487 ,  0.14742914],
   [ 0.27596818,  0.70073533],
   [ 0.52843694,  0.54878972],
   [ 0.13926434,  0.4223568 ],
   [ 0.39956441,  0.31257942],
   [ 0.06566612,  0.65883135],
   [ 0.44879016,  0.33009628],
   [ 0.68340944,  0.67422729],
   [ 0.25075741,  0.08038742]])

Я хочу построить круг радиуса r в следующих координатах, например диск 1:

x-coordinate: 0.680979 y-coordinate:0.8126483

Я хотел бы, чтобы все круги были нанесены на 1 график.


person MasterWali    schedule 08.02.2015    source источник


Ответы (1)


Если вы хотите указать размер круга в экранных единицах, используйте scatter

import matplotlib.pyplot as plt
import numpy as np

X, Y = np.array ([[ 0.680979  ,  0.8126483 ],
   [ 0.4634487 ,  0.14742914],
   [ 0.27596818,  0.70073533],
   [ 0.52843694,  0.54878972],
   [ 0.13926434,  0.4223568 ],
   [ 0.39956441,  0.31257942],
   [ 0.06566612,  0.65883135],
   [ 0.44879016,  0.33009628],
   [ 0.68340944,  0.67422729],
   [ 0.25075741,  0.08038742]]).T

r = 10  # in units of sq pixels

fig, ax = plt.subplots()
sc = ax.scatter(X, Y, s=r)

scatter документы

если вы хотите установить размер в единицах data:

import matplotlib.patches as mpatches
import matplotlib.collections as mcoll
fig, ax = plt.subplots()
circles = [mpatches.Circle((x, y), radius=.1) for x, y in zip(X, Y)]
coll = mcoll.PatchCollection(circles)
ax.add_collection(coll)
ax.set_aspect('equal')
# you may have to set the x and y limits your self.
ax.set_xlim(...)
ax.set_ylim(...)

circle doc, PatchCollection doc

person tacaswell    schedule 08.02.2015
comment
Я получил ошибку как fig, ax = plt.subplots() NameError: имя 'plt' не определено - person MasterWali; 09.02.2015