Pythonでクラスを利用した場合の複数のグラフを重ねる方法

python

class Complex: import math, matplotlib.pyplot as plt, numpy as np def comp( self, r, d ): return self.rnd( r * self.math.cos( self.math.radians(d) ) ), self.rnd( r * self.math.sin( self.math.radians(d) ) ) def rnd( self, n, keta=-3 ): return ( n // 10**keta ) * 10**keta def plot( self, f ): # f = f(d) = r xs, ys = [], [] for i in range( 361 ): try: x, y = self.comp( f( self.math.radians(i) ), i ) xs.append( x ) ys.append( y ) except: pass self.plt.figure( figsize=( 5, 5 ) ) self.grid_plot( max(xs), max(ys) ) self.plt.plot( xs, ys ) return None def grid_plot( self, x_m, y_m ): z = self.math.sqrt( x_m**2 + y_m**2 ) z_count = 0 dr = 10**(int( self.math.log( z, 10 ))) while True: if( z_count > z ): break xs, ys = [], [] for i in range( 361 ): x, y = self.comp( z_count, i ) xs.append( x ) ys.append( y ) self.plt.plot( xs, ys, c='#dddddd' ) z_count += dr ds = [ 30, 45, 60, 120, 135, 150 ] for d in ds: x, y = self.comp( z, d ) self.plt.plot( [ -1*x, x ], [ -1*y, y ], c='#dddddd' ) self.plt.plot( [ 0, 0 ], [ -1*z, z ], c='#ff9999' ) self.plt.plot( [ -1*z, z ], [ 0, 0 ], c='#ff9999' ) return None comp = Complex()comp.plot(lambda d:3*(1+comp.math.cos(d)+comp.math.sin(d)+comp.math.cos(2*d)+comp.math.sin(2*d)))comp.plot(lambda d:6*(1+comp.math.cos(d)+comp.math.sin(d)+comp.math.cos(2*d)+comp.math.sin(2*d)))

コメントを投稿

0 コメント