Skip to content

Instantly share code, notes, and snippets.

@jossef
Created June 18, 2016 12:18
Show Gist options
  • Select an option

  • Save jossef/33ec184141e0636da65092453d1b0d38 to your computer and use it in GitHub Desktop.

Select an option

Save jossef/33ec184141e0636da65092453d1b0d38 to your computer and use it in GitHub Desktop.
Hydraulic N1.85 Graph using matplotlib
from __future__ import unicode_literals
from __future__ import division
import numpy as np
from matplotlib import scale
from matplotlib import pylab
from matplotlib import transforms as mtransforms
from matplotlib.ticker import MultipleLocator
import matplotlib.pyplot as plt
class HydraulicN185Scale(scale.ScaleBase):
name = 'hydraulic-n-1.85'
def __init__(self, axis, **kwargs):
scale.ScaleBase.__init__(self)
def get_transform(self):
return HydraulicN185Transform()
def set_default_locators_and_formatters(self, axis):
axis.set_major_locator(MultipleLocator(100))
axis.set_minor_locator(MultipleLocator(10))
class HydraulicN185Transform(mtransforms.Transform):
input_dims = 1
output_dims = 1
is_separable = True
def transform_non_affine(self, a):
array = np.array(map(lambda x: max((x / 100) * 1.85, 1) * x, a))
return array
def inverted(self):
return self
scale.register_scale(HydraulicN185Scale)
def main():
plt.rc('lines', linewidth=2, color='r')
plt.rc('grid', linestyle="-", color='black')
first_point = (0, 30)
second_point = (600, 0)
third_point = (10, 10)
forth_point = (300, 10)
# -------
# First line
points = [
first_point,
second_point,
]
x = map(lambda x: x[0], points)
y = map(lambda x: x[1], points)
plt.plot(x, y, '-', color='blue')
# --------
# Second line (dashed)
points = [
third_point,
forth_point,
]
x = map(lambda x: x[0], points)
y = map(lambda x: x[1], points)
plt.plot(x, y, '--', color='red')
plt.scatter(x, y, color='red')
# --------
pylab.xlim([0, 1000])
pylab.ylim([0, 175])
gca = plt.gca()
gca.set_xscale('hydraulic-n-1.85')
gca.yaxis.set_major_locator(MultipleLocator(10))
gca.yaxis.set_minor_locator(MultipleLocator(1))
plt.tick_params('both', which='both', left='on', bottom='on', right='off', top='off', color='black')
plt.tick_params('both', which='minor', width=1, length=3)
plt.ylabel('PSI')
plt.xlabel('GPM')
plt.title('Hydraulic N 1.85')
plt.grid(True)
plt.show()
if __name__ == '__main__':
main()
@jossef
Copy link
Author

jossef commented Jun 18, 2016

this is the result:

figure_1-3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment