当前位置: 首页 > 面试题库 >

在一个图中绘制一些东西,以后再用于另一个图中

贾烨
2023-03-14
问题内容

我希望我在正确的地方提出这个问题。

我有一个for循环,其中创建了许多数字。循环结束后,我想再用三个较早创建的图作为辅助图再生成一个图形。

我现在的代码是这样的:

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)+(t/10)**2.

t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)


for i in range(2):
    fig= plt.figure(i)
    ax1=fig.add_subplot(111)
    plt.title('Jon Snow')
    kraft_plot,=ax1.plot(t1,np.sin(t1),color='purple')
    tyrion=ax1.axvline(2,color='darkgreen',ls='dashed')
    ax1.set_ylabel('Kraft [N]',color='purple',fontweight='bold')
    ax1.set_xlabel('Zeit [s]',fontweight='bold')
    ax2=ax1.twinx()
    strecke_plot,=ax2.plot(t2,t2/5,color='grey',label='Verlauf der Strecke')
    ax2.set_ylabel('Strecke [mm]',color='grey',fontweight='bold')
    ax1.legend((kraft_plot,tyrion,strecke_plot),('Jonny','Dwarf','andalltherest'),loc=2)

plt.show()

你能帮助我吗?我可以保存整个图/图吗?

干杯,达洛。

编辑:应该看起来像这样(右边是我要实现的目标):
右边的文本应该是正常拼写的,显然…

问题是,我首先想将数字单独打印,然后再一起打印(最终我想另存为pdf / png,其中包含三个数字)


问题答案:

在matplotlib中,轴(子图)始终只是一个图形的一部分。虽然可以选择将轴从一个图形复制到另一个图形,但这是一个相当复杂的过程。相反,您可以根据需要在多个图中简单地重新创建绘图。使用一个函数,该函数将要绘制的轴作为参数,这使操作变得很简单。

为了将所有三个数字保存为pdf,您可以使用pdfPages代码底部所示的格式。

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)+(t/10)**2.

t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)

def plot(ax, i):
    ax.set_title('Jon Snow')
    kraft_plot,=ax.plot(t1,np.sin(t1),color='purple')
    tyrion=ax.axvline(2,color='darkgreen',ls='dashed')
    ax.set_ylabel('Kraft [N]',color='purple',fontweight='bold')
    ax.set_xlabel('Zeit [s]',fontweight='bold')
    ax2=ax.twinx()
    strecke_plot,=ax2.plot(t2,t2/5,color='grey',label='Verlauf der Strecke')
    ax2.set_ylabel('Strecke [mm]',color='grey',fontweight='bold')
    ax.legend((kraft_plot,tyrion,strecke_plot),('Jonny','Dwarf','andalltherest'),loc=2)

figures=[]

for i in range(2):
    fig= plt.figure(i)
    ax1=fig.add_subplot(111)
    plot(ax1, i)
    figures.append(fig)

# create third figure
fig, (ax1,ax2) = plt.subplots(nrows=2)
plot(ax1, 0)
plot(ax2, 1)
figures.append(fig)

from matplotlib.backends.backend_pdf import PdfPages
with PdfPages('multipage_pdf.pdf') as pdf:
    for fig in figures:
        pdf.savefig(fig)


plt.show()

三页pdf输出:

在此处输入图片说明



 类似资料:
  • 因此,我正在创建一个cordova应用程序,在该应用程序中,我从iphone库中拍摄一张照片,将其绘制到画布上,并向其添加另一张图像,以便将其保存为一张照片。到目前为止,我从iphone照片库中绘制的照片可以毫无问题地绘制到画布上,但是第二张图片没有。 当我加载第二张图像时,它首先被添加到具有绝对定位的div中,以便将其移动到我想要的任何位置。之后,我得到了实际的图像,它的来源和位置,并尝试将其绘

  • 问题内容: 我的一个视图需要添加一个项目以及其他功能,但是我已经有另一个视图专门添加了一个项目。 我可以做类似的事情吗? 问题答案: View函数应将呈现的HTML返回给浏览器(在中)。在视图中调用视图意味着(可能)要进行两次渲染。相反,只需将“添加”分解为不是视图的另一个函数,并让两个视图都调用它。

  • 我有下面的脚本,当我在第二个数据集中有第三列时,它可以正常工作。现在,我想获得绘制的第一个带有错误条的直方图,第二个带有错误条。我可以从第二个plot命令中删除,但是gnuplot会抱怨没有为第二个直方图指定足够的数据。如果我删除

  • 使用matplotlib时,我可以使用{importmatplotlib.pyplotas plt}因为我使用Tkinter,所以我也会使用PicreCanvasTkAgg来做同样的事情 有人能帮我在如何实现matplotlib的停顿效果在菲格勒CanvasTkAgg。

  • 本文向大家介绍python 实现在一张图中绘制一个小的子图方法,包括了python 实现在一张图中绘制一个小的子图方法的使用技巧和注意事项,需要的朋友参考一下 有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法。 以上这篇python 实现在一张图中绘制一个小的子图方法就是小编分享给大家的

  • 我正在做一个简单的绘画程序。 我正在绘制一个自定义位图,然后用onDraw方法将这个位图绘制到画布上。 自定义位图和画布创建: 当有人触摸屏幕时,会画一个圆圈: 这很好,但每次在屏幕上绘制位图时,每个圆都有相同的颜色(绘制当前颜色): 所以如果我有一个红色的圆圈,将颜色更改为蓝色并绘制另一个圆圈,位图中的两个圆圈都是蓝色的。为什么会这样?我该如何解决这个问题?