如何在底图中画圆或添加艺术家
How to draw circle in basemap or add artiste
我想知道如何使用纬度和经度用底图绘制圆。
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
ax.axis([0,10,0,10])
circle1 = plt.Circle((5, 5), 2, color='black',fill=False)
x = ax.add_artist(circle1)
plt.show()
我想做同样的事情,但在我的底图中使用 x、y、radius 作为 lon lat
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(projection="mill", #miller est une projection connu
llcrnrlat =0,#lower left corner latitude
llcrnrlon =0,
urcrnrlat =10, #upper right lat
urcrnrlon =10,
resolution = "l") #c croud par defaut, l low , h high , f full
m.drawcoastlines() #dessiner les lignes
m.drawcountries()
m.drawstates()
m.drawcounties(color="b")
#m.fillcontinents() #colorier les payes
#m.etopo()
x,y=m(5,5)
m.plot(x,y,"o")
plt.show()
所以我不确定您希望地图中的圆的半径,但此代码会在您的地图顶部绘制一个圆形多边形 m
:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
m = Basemap(projection="mill", #miller est une projection connu
llcrnrlat =0,#lower left corner latitude
llcrnrlon =0,
urcrnrlat =10, #upper right lat
urcrnrlon =10,
resolution = "l") #c croud par defaut, l low , h high , f full
这里的圆,我随便选了你的y-axis全长1/3的半径...
circle = Circle(xy=m(5,5),radius=(m.ymax - m.ymin) / 3, fill=False)
plt.gca().add_patch(circle)
m.drawcoastlines() #dessiner les lignes
m.drawcountries()
m.drawstates()
plt.show()
准备好这两个代码后,您只需将一个复制到另一个即可。唯一的问题可能是需要在地图坐标中计算圆半径,
r = 2
x,y=m(5,5)
x2,y2 = m(5,5+r)
circle1 = plt.Circle((x, y), y2-y, ..)
完整示例:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
m = Basemap(projection="mill", #miller est une projection connu
llcrnrlat =0,#lower left corner latitude
llcrnrlon =0,
urcrnrlat =10, #upper right lat
urcrnrlon =10,
resolution = "l", ax=ax) #c croud par defaut, l low , h high , f full
m.drawcoastlines() #dessiner les lignes
m.drawcountries()
m.drawstates()
m.drawcounties(color="b")
x,y=m(5,5)
x2,y2 = m(5,5+2)
circle1 = plt.Circle((x, y), y2-y, color='black',fill=False)
ax.add_patch(circle1)
plt.show()
我想知道如何使用纬度和经度用底图绘制圆。
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
ax.axis([0,10,0,10])
circle1 = plt.Circle((5, 5), 2, color='black',fill=False)
x = ax.add_artist(circle1)
plt.show()
我想做同样的事情,但在我的底图中使用 x、y、radius 作为 lon lat
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(projection="mill", #miller est une projection connu
llcrnrlat =0,#lower left corner latitude
llcrnrlon =0,
urcrnrlat =10, #upper right lat
urcrnrlon =10,
resolution = "l") #c croud par defaut, l low , h high , f full
m.drawcoastlines() #dessiner les lignes
m.drawcountries()
m.drawstates()
m.drawcounties(color="b")
#m.fillcontinents() #colorier les payes
#m.etopo()
x,y=m(5,5)
m.plot(x,y,"o")
plt.show()
所以我不确定您希望地图中的圆的半径,但此代码会在您的地图顶部绘制一个圆形多边形 m
:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
m = Basemap(projection="mill", #miller est une projection connu
llcrnrlat =0,#lower left corner latitude
llcrnrlon =0,
urcrnrlat =10, #upper right lat
urcrnrlon =10,
resolution = "l") #c croud par defaut, l low , h high , f full
这里的圆,我随便选了你的y-axis全长1/3的半径...
circle = Circle(xy=m(5,5),radius=(m.ymax - m.ymin) / 3, fill=False)
plt.gca().add_patch(circle)
m.drawcoastlines() #dessiner les lignes
m.drawcountries()
m.drawstates()
plt.show()
准备好这两个代码后,您只需将一个复制到另一个即可。唯一的问题可能是需要在地图坐标中计算圆半径,
r = 2
x,y=m(5,5)
x2,y2 = m(5,5+r)
circle1 = plt.Circle((x, y), y2-y, ..)
完整示例:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
m = Basemap(projection="mill", #miller est une projection connu
llcrnrlat =0,#lower left corner latitude
llcrnrlon =0,
urcrnrlat =10, #upper right lat
urcrnrlon =10,
resolution = "l", ax=ax) #c croud par defaut, l low , h high , f full
m.drawcoastlines() #dessiner les lignes
m.drawcountries()
m.drawstates()
m.drawcounties(color="b")
x,y=m(5,5)
x2,y2 = m(5,5+2)
circle1 = plt.Circle((x, y), y2-y, color='black',fill=False)
ax.add_patch(circle1)
plt.show()