mycdplot_histogram_01.py

#! /usr/bin/python3
# ==================================================================
# Print Hsitogram Using My crude/dumb plot
#
# Note:
#
#  1. this code uses a very crude/dumb plot technique
#  2. take note which value is x and which value is y
#     in the data and which axis shows which values
#
# ==================================================================

import numpy

# ---- size of plot area

plotx = 40
ploty = 40

# ---- plot character

plotc = '*'

# ---- plot data (x,y)

data = [ (100,245), (200,300), (300,20), (400,700),
         (500,34),  (60,400),  (700,44), (80,333),
         (900,333), (1000,1000) ]

# ---- plot x/y min/max

xmin = None
xmax = None
ymin = None
ymax = None

for t in data:

    # ---- x minimum

    if xmin == None:
        xmin = t[0]
    else:
        if t[0] < xmin:
            xmin = t[0]

    # --- x maximum

    if xmax == None:
        xmax = t[0]
    else:
        if t[0] > xmax:
            xmax = t[0]

    # --- y minimum

    if ymin == None:
        ymin = t[1]
    else:
        if t[1] < ymin:
            ymin = t[1]

    # --- y maximum

    if ymax == None:
        ymax = t[1]
    else:
        if t[1] > ymax:
            ymax = t[1]

print("")
print("---- data max/min -------------------------\n")

print("xmin = {}".format(xmin))
print("xmax = {}".format(xmax))
print("ymin = {}".format(ymin))
print("ymax = {}".format(ymax))

# ---- plot data - only scale x

print("")
print("---- histogram ----------------------------\n")

for t in data:
    n = int((t[0]/xmax) * plotx)
    ##print("n = {}  (x={})".format(n,t[0]))
    print("{:>6} | {}".format(t[1],plotc*n))