Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
import random
import matplotlib.pyplot as plt
from mpldatacursor import datacursor
def main():
accounts = generate_accounts()
lookup = plot(accounts)
datacursor(formatter=Formatter(lookup), bbox=dict(alpha=1))
def plot(accounts):
lookup = {}
fig, ax = plt.subplots()
for i, account in enumerate(accounts):
artist, =[i], [account.balance], align='center')
lookup[artist] = account
ax.set(xticks=[], ylabel='Balance ($)')
return lookup
def generate_accounts():
names = ['Mark', 'Nancy', 'Sam', 'John', 'Patricia', 'Anna']
accounts = [random.randint(100000, 9999999) for _ in names]
balances = [random.randint(-1000, 10000) for _ in names]
return [BankAccount(*item) for item in zip(names, accounts, balances)]
class BankAccount:
def __init__(self, owner, number, balance):
self.owner, self.number, self.balance = owner, number, balance
class Formatter:
def __init__(self, account_lookup):
self.account_lookup = account_lookup
def __call__(self, **kwargs):
artist = kwargs['event'].artist
account = self.account_lookup[artist]
template = 'Owner: {}\nAccount: {}\nBalance: {}'
return template.format(account.owner, account.number, account.balance)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.