简体   繁体   English

Matplotlib:底图中的插图

[英]Matplotlib: Inset plot within Basemap

I'm attempting to inset a line graph within the lower right-hand corner of a Basemap plot, but the code I'm using ( based off the Matplotlib documentation ) is not working for me, probably because it includes no Basemap arguments. 我试图在底图的右下角插入一个折线图,但是我正在使用的代码( 基于Matplotlib文档 )对我不起作用,可能是因为它不包含底图参数。 Instead, I keep getting a figure that looks like this: 相反,我不断得到一个看起来像这样的数字:

在此处输入图片说明

Below is the code I've used to try and create my figure. 以下是我用来尝试创建图形的代码。 Any help on getting the line graph inside the graph would be extremely helpful. 任何将折线图放入图形中的帮助都将非常有帮助。 Thanks in advance! 提前致谢!

fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(121)
m = Basemap(llcrnrlon=50.,llcrnrlat=35.,urcrnrlon=160.,urcrnrlat=63.,projection='lcc',resolution='c',lat_1=20.,lat_2=40.,lon_0=90.,lat_0=50.)
m.drawcountries(color='black')
m.drawmapboundary(fill_color='lightblue')
m.fillcontinents(color='beige')
m.drawparallels(np.arange(0.,90.,5.),color='gray',dashes=[1,3],labels=[1,0,0,0])
m.drawmeridians(np.arange(0.,360.,15.),color='gray',dashes=[1,3],labels=[0,0,0,1])

clat = np.arange(65,45,-2)
clon = np.arange(80,100,2)
dlat = np.arange(70,50,-2)
dlon = np.arange(85,105,2)
mincon = np.random.randint(900,1000,73)
mindis = np.random.randint(910,1010,73)


cX,cY = m(clon,clat)
dX,dY = m(dlon,dlat)
m.plot(cX,cY,'bo-',label='Continuous')
m.plot(dX,dY,'ro-',label='Discontinuous') 
ax.legend()

a = plt.axes([0.7,0.3,.2,.2])
plt.plot(np.arange(0,73,1),mincon,color='blue',label='Continuous')
plt.plot(np.arange(0,73,1),mindis,color='red',label='Discontinuous')
plt.xlabel('Model Time')
plt.ylabel('Minimum Pressure (hPa)')

plt.show() 

I'd use an mpl_toolkits.axes_grid1.inset_locator.inset_axes . 我会使用mpl_toolkits.axes_grid1.inset_locator.inset_axes

import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt


fig = plt.figure(figsize=(10,6))
ax = fig.add_subplot(111)

m = Basemap(llcrnrlon=50.,llcrnrlat=35.,urcrnrlon=160.,urcrnrlat=63.,
            projection='lcc',resolution='c',lat_1=20.,lat_2=40.,lon_0=90.,lat_0=50., ax=ax)
m.drawcountries(color='black')
m.drawmapboundary(fill_color='lightblue')
m.fillcontinents(color='beige')
m.drawparallels(np.arange(0.,90.,5.),color='gray',dashes=[1,3],labels=[1,0,0,0])
m.drawmeridians(np.arange(0.,360.,15.),color='gray',dashes=[1,3],labels=[0,0,0,1])

clat = np.arange(65,45,-2)
clon = np.arange(80,100,2)
dlat = np.arange(70,50,-2)
dlon = np.arange(85,105,2)
mincon = np.random.randint(900,1000,73)
mindis = np.random.randint(910,1010,73)


cX,cY = m(clon,clat)
dX,dY = m(dlon,dlat)
m.plot(cX,cY,'bo-',label='Continuous')
m.plot(dX,dY,'ro-',label='Discontinuous') 
ax.legend(loc="lower left")

ax2 = inset_axes(ax, "30%", "40%", loc="lower right")
ax2.plot(np.arange(0,73,1),mincon,color='blue',label='Continuous')
ax2.plot(np.arange(0,73,1),mindis,color='red',label='Discontinuous')
ax2.set_xlabel('Model Time')
ax2.set_ylabel('Minimum Pressure (hPa)')
ax2.xaxis.set_ticks_position('top')
ax2.xaxis.set_label_position('top') 

plt.show() 

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM