将图的“特性”从一个类复制到另一个

时间:2019-11-21 18:58:02

标签: python python-3.x pandas matplotlib plot

我想知道是否可以将绘图特征从一个图形复制到另一个图形。这里是一个例子:

您具有使用“ A”类的方法绘制的第一个图,其中绘制了曲线,并定义了xlim和网格:

class A:
   def __init__(self):
       self.plot()
   def plot(self):
       test1=[[1.11,1.12,1.13,1.14,1.12,1.13,1.14,1.15], [1,1,1,1, 5,5,5,5], [0,11,20,30,0,11,20,30]] 
       self.data=pd.DataFrame(test1).T
       ax = plt.gca()
       self.data.plot(ax=ax)

       ax.set_xlim(0, 40)

       n_x,n_y=11,8.5
       ax.set_aspect( ax.get_xlim()[1]/ax.get_ylim()[1] * n_y/n_x  ) 
       # Customize the major grid
       ax.grid(which='major', linestyle='-', linewidth='1.1', color='black')
       # Customize the minor grid
       ax.grid(which='minor', linestyle=':', linewidth='0.5', color='black')

然后在另一个文件上有另一个类“ B”:

 class B:
   def __init__(self):
       self.plot()
   def plot(self):
       test2=[[2.55,6.55,0.33], [1.2,2.2,2.3]] 
       self.data=pd.DataFrame(test2).T
       self.data.plot()

如果我叫A类,是否可以复制网格和xlim而无需在B类中再次进行?就像创建一个包含所有这些特征的变量一样?

例如,我可以定义那些xlim和grid而不在A类中绘图而仅在B类中绘图吗?确实,类B在GUI文件中,我在其中与Tkinter进行了接口,我想从其中的另一个文件中绘制曲线。

希望我的回答有点清楚^^谢谢:)

1 个答案:

答案 0 :(得分:0)

您可能宁愿创建一个可以接收不同数据的单一类。

import matplotlib.pyplot as plt
import pandas as pd

class Base():
    def __init__(self, data):
        self.data = pd.DataFrame(test1).T

    def plot(self, ax=None):
        ax = ax or plt.gca()
        self.data.plot(ax=ax)
        ax.set_xlim(0, 10)

        n_x,n_y=11,8.5
        ax.set_aspect( ax.get_xlim()[1]/ax.get_ylim()[1] * n_y/n_x  )  
        ax.grid(which='major', linestyle='-', linewidth='1.1', color='black')
        ax.grid(which='minor', linestyle=':', linewidth='0.5', color='black')


test1=[[1.11,1.12,1.13,1.14,1.12,1.13,1.14,1.15], [1,1,1,1, 5,5,5,5], [0,11,20,30,0,11,20,30]] 
test2=[[2.55,6.55,0.33], [1.2,2.2,2.3]] 

b1 = Base(test1)
b2 = Base(test2)
b1.plot()
b2.plot()
plt.show()