Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pyplot(matplotlib)中的同一绘图上添加两个色条?_Python_Matplotlib_Colorbar - Fatal编程技术网

Python 如何在pyplot(matplotlib)中的同一绘图上添加两个色条?

Python 如何在pyplot(matplotlib)中的同一绘图上添加两个色条?,python,matplotlib,colorbar,Python,Matplotlib,Colorbar,我想画一个子图,如: Title 1 Fig1 Fig2 Fig3 为这3个图形(1,2,3)使用公共颜色条 这3个数字(4,5,6)有一个通用的颜色条 我还没有找到在同一个图形上添加两个不同颜色条的方法,如上所述。这有点棘手,但您可以使用一个公共颜色条共享子图集 我借鉴了一些以前的答案,这些答案可能也值得一读: 当然,matplotlib的 import numpy as np import matplotlib.pyplot as plt from mpl_toolki

我想画一个子图,如:

Title 1
Fig1    Fig2    Fig3 
为这3个图形(1,2,3)使用公共颜色条

这3个数字(4,5,6)有一个通用的颜色条


我还没有找到在同一个图形上添加两个不同颜色条的方法,如上所述。

这有点棘手,但您可以使用一个公共颜色条共享子图集

我借鉴了一些以前的答案,这些答案可能也值得一读:

当然,matplotlib的

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid

# Generate some random data
data_top = np.random.random((3,10,10)) * 5
data_bot = np.random.random((3,20,20)) * 10

fig  = plt.figure()

grid_top = ImageGrid(fig, 211, nrows_ncols = (1, 3),
                     cbar_location = "right",                     
                     cbar_mode="single",
                     cbar_pad=.2) 
grid_bot = ImageGrid(fig, 212, nrows_ncols = (1, 3),
                     cbar_location = "right",                     
                     cbar_mode="single",
                     cbar_pad=.2) 

for n in xrange(3):
    im1 = grid_top[n].imshow(data_top[n], 
                            interpolation='nearest', vmin=0, vmax=5)

    im2 = grid_bot[n].imshow(data_bot[n], cmap=plt.get_cmap('bone'), 
                             interpolation='nearest', vmin=0, vmax=10)


grid_top.cbar_axes[0].colorbar(im1)
grid_bot.cbar_axes[0].colorbar(im2)

plt.show()

这有点棘手,但您可以使用公共颜色栏共享子图集

我借鉴了一些以前的答案,这些答案可能也值得一读:

当然,matplotlib的

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid

# Generate some random data
data_top = np.random.random((3,10,10)) * 5
data_bot = np.random.random((3,20,20)) * 10

fig  = plt.figure()

grid_top = ImageGrid(fig, 211, nrows_ncols = (1, 3),
                     cbar_location = "right",                     
                     cbar_mode="single",
                     cbar_pad=.2) 
grid_bot = ImageGrid(fig, 212, nrows_ncols = (1, 3),
                     cbar_location = "right",                     
                     cbar_mode="single",
                     cbar_pad=.2) 

for n in xrange(3):
    im1 = grid_top[n].imshow(data_top[n], 
                            interpolation='nearest', vmin=0, vmax=5)

    im2 = grid_bot[n].imshow(data_bot[n], cmap=plt.get_cmap('bone'), 
                             interpolation='nearest', vmin=0, vmax=10)


grid_top.cbar_axes[0].colorbar(im1)
grid_bot.cbar_axes[0].colorbar(im2)

plt.show()

谢谢你的帮助。它几乎起作用了。。我使用basemap绘制正交投影。所以,我必须定义m=Basemap(projection='ortho',lon_0=lon_0,lat_0=lat_0,resolution='l',\llcrnrx=0.,llcrnry=0.,urcrnrx=m1.urcrnx/2.,urcrnry=m1.urcrnry/2.)然后我调用m.pcolor来绘制我的图形。但是如果我尝试im1=grid\u top[n].m.pcolor,它就不起作用了。此外,我如何在每个数字上方添加标题并删除绘图周围的所有数字?@user2050187很高兴这有点帮助。StackOverflow的效果更好,如果你把你的问题分解成我们可以单独回答的单个部分。如果您尽可能多地陈述信息(即底图和极坐标图),也会有所帮助,因为这可能会影响答案。删除数字和添加通用标题是本网站已回答的问题,例如。记住接受你问题的答案!谢谢你的帮助。它几乎起作用了。。我使用basemap绘制正交投影。所以,我必须定义m=Basemap(projection='ortho',lon_0=lon_0,lat_0=lat_0,resolution='l',\llcrnrx=0.,llcrnry=0.,urcrnrx=m1.urcrnx/2.,urcrnry=m1.urcrnry/2.)然后我调用m.pcolor来绘制我的图形。但是如果我尝试im1=grid\u top[n].m.pcolor,它就不起作用了。此外,我如何在每个数字上方添加标题并删除绘图周围的所有数字?@user2050187很高兴这有点帮助。StackOverflow的效果更好,如果你把你的问题分解成我们可以单独回答的单个部分。如果您尽可能多地陈述信息(即底图和极坐标图),也会有所帮助,因为这可能会影响答案。删除数字和添加通用标题是本网站已回答的问题,例如。记住接受你问题的答案!