def get_suit_rank_date_chart(self, config): path_to_chart = 'suit_rank_date_chart' daily_tt_data = self.get_report_data() chart_title = "Suit/Rank Clustering by Date" if self.CONFIG_START_DATE in config: daily_tt_data = self.filter_by_date(config[self.CONFIG_START_DATE], config[self.CONFIG_END_DATE], daily_tt_data) chart_title = "Suit and Rank Plot for the Date Range of {} -- {}".format( config[self.CONFIG_START_DATE], config[self.CONFIG_END_DATE]) # each suit is a key in a dict, each val is a list containing these as items: # (datetime(2013, 1, 2), 300) # (yyyy,m,d), rank chart_data_set = {} for dtt in daily_tt_data: data = daily_tt_data[dtt] (month, day, year) = data['date'].split("/") # datetime and card obj import datetime dailytt_date = datetime.date(int(year), int(month), int(day)) card = Card() try: card.suit = data[self.REPORT_TERM_SUIT] card.rank = int(data[self.REPORT_TERM_RANK]) except KeyError as kex: print('caught bad key {} for data {} with id {}'.format( kex, data, dtt)) dt = Daily_TT(dailytt_date, card) chart_keys = chart_data_set.keys() if card.suit in chart_keys: chart_data_set[card.suit].append((dt.date, dt.card.rank)) else: chart_data_set[card.suit] = [(dt.date, dt.card.rank)] logging.info('suits by date data looks like: {}'.format( str(chart_data_set))) return self.get_date_xy_chart(data=chart_data_set)