首页 > 解决方案 > python如何在指定的图像上绘图?

问题描述

我想在函数中编写我通常在绘图时使用的操作和参数。以后只要传入x和y就可以按照默认参数进行绘制了。但现在我面临的问题是,我如何确定画plt.plot的是哪张照片?例如,我想在一张图片上画两条曲线。

   def draw(x,y):
        ...            %some operations
        plt.plot(x,y)  % draw picture operations
        ...            %some operations

   draw(x,y),
   dray(x2,y2) 

如何保证这两条曲线画在一张图片上。也就是说,我需要传递哪些参数才能将plt.plot焦点放在我指定的图片上。

def plotLine(coordinate,figName='test',xylabel=[],ax=None):
    # assert(len(coordinate)<=2)
    if (len(coordinate)==2) :
        x=coordinate[0]
        y=coordinate[1]
        assert(len(x)==len(y))
    else:
        y=coordinate
        x =np.linspace(0,len(y)-1,len(y))

    minn=min(y)
    maxx=max(y)
    
    plt.switch_backend('Agg')

    if ax == None:
        fig,ax = plt.subplots()
        fig = plt.figure(num=None, figsize=(3.5, 1.5), dpi=300, facecolor='w')
        plt.subplots_adjust(right = 0.98, top = 0.98, bottom=0.35,left=0.32,wspace=0, hspace=0.2)
        ax.set_xlim([0,len(x)])
        ax.set_ylim([0,maxx+maxx/3])
        plt.xticks(fontsize=5)
        plt.yticks(fontsize=5)
    
    bar_width = 0.35
    opacity = 0.8
    lsmarkersize = 2.5    
    lslinewidth = 0.6
    
    ax.plot(x,y,'-', linewidth=1, markersize=lsmarkersize, markeredgewidth=0)
    plt.savefig(figName+".png",bbox_inches='tight',dpi=500)
    # os.system("code "+figName+".png")
    if ax!=None:
        return ax
    else:
        return plt.gca()

x=[1,2,3,4,5,6]
y=[1,2,3,4,4,5]
ax = plotLine([x,y])

x=[1,2,3,4,5,6]
y=[12,13,14,15,16,17]
plotLine([x,y],ax=ax)

我试图将 ax 作为参数传递。但是最后绘制的图片是空白的。

标签: pythonmatplotlib

解决方案


您可以使用subplots指定要绘制的轴。例如,创建一个带有单个子图的图形:

fig, ax = plt.subplots()
ax.plot(x, y)

对于您的功能,您可以执行以下操作

fig, ax = plt.subplots()
def draw(x, y, ax):
   ax.plot(x, y)

def dray(x2, y2, ax):
   ax.plot(x2, y2)

推荐阅读