知道某点经纬度,知道半径为公里,怎么以那个经纬度为圆心,以半径画圆,类似于下图两个黑色圆圈,它们分别是以南京和鞍山为圆心画的圆,要求画的图精确,考虑地球曲率
用Python的folium库。首先安装folium库,可以用以下命令安装:
pip install folium
然后,你可以使用以下代码在地图上画圆:
import folium
# 圆心经纬度和半径(单位:米)
circle_center = (31.22, 121.48) # 上海
circle_radius = 10000 # 10公里
# 创建地图对象
m = folium.Map(location=circle_center, zoom_start=10)
# 在地图上画圆
folium.Circle(
location=circle_center,
radius=circle_radius,
color='#000000', # 黑色
fill=True,
fill_color='#000000', # 黑色
fill_opacity=0.5,
).add_to(m)
# 保存地图为HTML文件
m.save("map.html")
这段代码会创建一个以上海为圆心,半径为10公里的圆。根据实际需要修改圆心经纬度和半径。最后,它会将地图保存为一个HTML文件,你可以在浏览器中打开查看。
乍一看,这个图挺唬人的,因为它横坐标有17个(0-16)点,但是仔细看看,就会发现中间的点都是跳跃连接的,根本没有点,有点的地方只是0,1,2,4,8,16.而且0点上只有一个点,所以怎么跳跃过去还得让它把横坐标的数字均匀的显示出来是个问题,我找了很多博客,结果最后不能跳跃连接,而且0那个点不显示。实在是苦恼了我很久,今天终于看到一本书解决了这个问题,记录下来,供大家参考。话不多说,上代码:
import matplotlib.pyplot as plt
styles = plt.style.available
CLIP_Adapter = [19, 22, 26, 31, 38]
COOP = [5, 18, 22, 27.5, 34]
linear_Clip = [13, 18, 22, 30, 36]
input_values = [1, 2, 4, 8, 16]
fig, ax = plt.subplots()
ax.plot(input_values, CLIP_Adapter, linewidth=3, marker='o', mec='r', mfc='w', label='CLIP-Adapter', color='#9B59B6')
ax.plot(input_values, COOP, linewidth=3, marker='8', label='COOP', color='#E67C1F')
ax.plot(input_values, linear_Clip, linewidth=3, marker='*', label='linear probe Clip', color='#5490B9')
plt.scatter(0, 17.55, marker='D', label='Zero-Shot CLIP', color='#204969')
plt.subplots_adjust(bottom=0.10)
# 设置背景颜色
plt.rcParams['axes.facecolor'] = 'white'
# 设置背景线条样式
plt.grid(linestyle='--')
plt.xlabel('Number of labeled training examples per class') # X轴标签
plt.ylabel("Score(%)") # Y轴标签
plt.margins(0.15)
plt.legend()
# plt.savefig("FGVCAircraft.jpg")
fig.show()
最后的结果如下图所示:
没有刻意去调它的颜色和数字,最后展示的结果和原图基本一致,希望能帮到大家。