rotplot.py

Created by ews31415

Created on April 20, 2021

1.46 KB

Numworks - Python

Rotated Plot

The script rotplot.py allows the user to choose between one of five equations: 1. y = a + bx 2. y = ax^2 + bx + c 3. y = ax^3 + bx^2 + cx + d 4. y = a * sin(bx + c) + d 5. y = a * exp(bx + c ) + d

The original plot is in gray, the rotated plot is in blue.


from math import *
from matplotlib.pyplot import *

# 2021-04-18 EWS
print("Choose an equation.")

# define a,b,c,d
a=0
b=0
c=0
d=0


eq=6
while eq<1 or eq>5:
  print("y=")
  print("1. ax+b")
  print("2. quadratic")
  print("3. cubic")
  print("4. a sin(bx+c)+d")
  print("5. a exp(bx+c)+d")
  eq=int(input())

a=float(input("a? "))
b=float(input("b? "))
if eq>=2:
  c=float(input("c? "))
if eq>=3:
  d=float(input("d? "))

p=float(input("Angle in degrees? "))
p=radians(p)

# main routine
xa=float(input('start? '))
xb=float(input('stop? '))
n=float(input('n? '))
xc=(xb-xa)/n

# define function here
def f(eq,a,b,c,d,x,p):
  if eq==1:
    y=a*x+b
  if eq==2:
    y=a*x**2+b*x+c
  if eq==3:
    y=a*x**3+b*x**2+c*x+d
  if eq==4:
    y=a*sin(b*x+c)+d
  if eq==5:
    y=a*exp(b*x+c)+d
  xr=x*cos(p)-y*sin(p)
  yr=x*sin(p)+y*cos(p)    
  return [x,y,xr,yr]

# build
flist=f(eq,a,b,c,d,xa,p)
xlist=[flist[0]]
ylist=[flist[1]]
xrlist=[flist[2]]
yrlist=[flist[3]]
xp=xa

# lists
while xp<xb:
  xp=xp+xc
  flist=f(eq,a,b,c,d,xp,p)
  xlist.append(flist[0])
  ylist.append(flist[1])
  xrlist.append(flist[2])
  yrlist.append(flist[3])

# plot routine

# set axes
x1x=min(xlist)
x1xr=min(xrlist)
x1=min(x1x,x1xr)

y1x=min(ylist)
y1xr=min(yrlist)
y1=min(y1x,y1xr)

x2x=max(xlist)
x2xr=max(xrlist)
x2=max(x2x,x2xr)

y2x=max(ylist)
y2xr=max(yrlist)
y2=max(y2x,y2xr)

axis((x1,x2,y1,y2))
axis(True)
grid(True)

# plot points
plot(xlist,ylist,color='gray')
plot(xrlist,yrlist,color='blue')
show()