1

Question

I have a dataframe of "recalls" and a dataframe of "precisions". Both are the same shape and indexed the same way. I'd like to draw a figure of many precision/recall curves, one for each row. How do I use one dataframe as the x and another as the y?

I can already nicely plot just the precisions or just the recalls with df.plot(), but all pandas plotting seems to plot using the columns as one of the axes in the plot. In this case I don't want to plot each row against the columns.

Ideas

  • I could merge the two dataframes and interleave x and y values, either column-wise or row-wise. Not sure I could use pandas plotting anymore though.

  • I could potentially do .to_records on each of my dataframes, then do this directly in python / matplotlib. Not exactly sure how I would do that...

    for precisions, recalls in zip(precisions_list, recalls_list):
        plt.plot(precisions, recalls,...)
    

    seems like a bad idea if I have a ton of rows...

Example data

recalls = pd.DataFrame.from_dict({0.0001: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.00034145488738336009: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.0011659144011798312: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.0039810717055349734: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.013593563908785255: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.046415888336127774: {('hsa00970', 'fold_0'): 0.015151515151515152,  ('hsa00970', 'fold_1'): 0.015151515151515152,  ('hsa00970', 'fold_2'): 0.015151515151515152,  ('hsa00970', 'fold_3'): 0.015151515151515152,  ('hsa00970', 'fold_4'): 0.015151515151515152,  ('hsa00970', 'fold_5'): 0.015151515151515152,  ('hsa00970', 'fold_6'): 0.015151515151515152,  ('hsa00970', 'fold_7'): 0.015151515151515152,  ('hsa00970', 'fold_8'): 0.015151515151515152,  ('hsa00970', 'fold_9'): 0.015151515151515152,  ('hsa02010', 'fold_0'): 0.045454545454545456,  ('hsa02010', 'fold_1'): 0.022727272727272728,  ('hsa02010', 'fold_2'): 0.045454545454545456,  ('hsa02010', 'fold_3'): 0.045454545454545456,  ('hsa02010', 'fold_4'): 0.022727272727272728,  ('hsa02010', 'fold_5'): 0.045454545454545456,  ('hsa02010', 'fold_6'): 0.045454545454545456,  ('hsa02010', 'fold_7'): 0.045454545454545456,  ('hsa02010', 'fold_8'): 0.045454545454545456,  ('hsa02010', 'fold_9'): 0.045454545454545456}, 0.15848931924611143: {('hsa00970', 'fold_0'): 0.13636363636363635,  ('hsa00970', 'fold_1'): 0.12121212121212122,  ('hsa00970', 'fold_2'): 0.12121212121212122,  ('hsa00970', 'fold_3'): 0.13636363636363635,  ('hsa00970', 'fold_4'): 0.13636363636363635,  ('hsa00970', 'fold_5'): 0.15151515151515152,  ('hsa00970', 'fold_6'): 0.12121212121212122,  ('hsa00970', 'fold_7'): 0.13636363636363635,  ('hsa00970', 'fold_8'): 0.13636363636363635,  ('hsa00970', 'fold_9'): 0.13636363636363635,  ('hsa02010', 'fold_0'): 0.11363636363636363,  ('hsa02010', 'fold_1'): 0.11363636363636363,  ('hsa02010', 'fold_2'): 0.13636363636363635,  ('hsa02010', 'fold_3'): 0.13636363636363635,  ('hsa02010', 'fold_4'): 0.13636363636363635,  ('hsa02010', 'fold_5'): 0.090909090909090912,  ('hsa02010', 'fold_6'): 0.11363636363636363,  ('hsa02010', 'fold_7'): 0.13636363636363635,  ('hsa02010', 'fold_8'): 0.11363636363636363,  ('hsa02010', 'fold_9'): 0.090909090909090912}, 0.54116952654646377: {('hsa00970', 'fold_0'): 0.18181818181818182,  ('hsa00970', 'fold_1'): 0.21212121212121213,  ('hsa00970', 'fold_2'): 0.15151515151515152,  ('hsa00970', 'fold_3'): 0.21212121212121213,  ('hsa00970', 'fold_4'): 0.18181818181818182,  ('hsa00970', 'fold_5'): 0.18181818181818182,  ('hsa00970', 'fold_6'): 0.15151515151515152,  ('hsa00970', 'fold_7'): 0.15151515151515152,  ('hsa00970', 'fold_8'): 0.19696969696969696,  ('hsa00970', 'fold_9'): 0.21212121212121213,  ('hsa02010', 'fold_0'): 0.18181818181818182,  ('hsa02010', 'fold_1'): 0.15909090909090909,  ('hsa02010', 'fold_2'): 0.18181818181818182,  ('hsa02010', 'fold_3'): 0.18181818181818182,  ('hsa02010', 'fold_4'): 0.18181818181818182,  ('hsa02010', 'fold_5'): 0.18181818181818182,  ('hsa02010', 'fold_6'): 0.20454545454545456,  ('hsa02010', 'fold_7'): 0.20454545454545456,  ('hsa02010', 'fold_8'): 0.18181818181818182,  ('hsa02010', 'fold_9'): 0.18181818181818182}, 1.8478497974222907: {('hsa00970', 'fold_0'): 0.25757575757575757,  ('hsa00970', 'fold_1'): 0.24242424242424243,  ('hsa00970', 'fold_2'): 0.24242424242424243,  ('hsa00970', 'fold_3'): 0.27272727272727271,  ('hsa00970', 'fold_4'): 0.24242424242424243,  ('hsa00970', 'fold_5'): 0.22727272727272727,  ('hsa00970', 'fold_6'): 0.19696969696969696,  ('hsa00970', 'fold_7'): 0.21212121212121213,  ('hsa00970', 'fold_8'): 0.25757575757575757,  ('hsa00970', 'fold_9'): 0.24242424242424243,  ('hsa02010', 'fold_0'): 0.18181818181818182,  ('hsa02010', 'fold_1'): 0.20454545454545456,  ('hsa02010', 'fold_2'): 0.18181818181818182,  ('hsa02010', 'fold_3'): 0.18181818181818182,  ('hsa02010', 'fold_4'): 0.18181818181818182,  ('hsa02010', 'fold_5'): 0.18181818181818182,  ('hsa02010', 'fold_6'): 0.20454545454545456,  ('hsa02010', 'fold_7'): 0.20454545454545456,  ('hsa02010', 'fold_8'): 0.18181818181818182,  ('hsa02010', 'fold_9'): 0.18181818181818182}, 6.3095734448019298: {('hsa00970', 'fold_0'): 0.27272727272727271,  ('hsa00970', 'fold_1'): 0.31818181818181818,  ('hsa00970', 'fold_2'): 0.33333333333333331,  ('hsa00970', 'fold_3'): 0.27272727272727271,  ('hsa00970', 'fold_4'): 0.2878787878787879,  ('hsa00970', 'fold_5'): 0.22727272727272727,  ('hsa00970', 'fold_6'): 0.25757575757575757,  ('hsa00970', 'fold_7'): 0.24242424242424243,  ('hsa00970', 'fold_8'): 0.2878787878787879,  ('hsa00970', 'fold_9'): 0.31818181818181818,  ('hsa02010', 'fold_0'): 0.20454545454545456,  ('hsa02010', 'fold_1'): 0.22727272727272727,  ('hsa02010', 'fold_2'): 0.22727272727272727,  ('hsa02010', 'fold_3'): 0.22727272727272727,  ('hsa02010', 'fold_4'): 0.22727272727272727,  ('hsa02010', 'fold_5'): 0.20454545454545456,  ('hsa02010', 'fold_6'): 0.22727272727272727,  ('hsa02010', 'fold_7'): 0.22727272727272727,  ('hsa02010', 'fold_8'): 0.22727272727272727,  ('hsa02010', 'fold_9'): 0.18181818181818182}, 21.544346900318821: {('hsa00970', 'fold_0'): 0.2878787878787879,  ('hsa00970', 'fold_1'): 0.37878787878787878,  ('hsa00970', 'fold_2'): 0.40909090909090912,  ('hsa00970', 'fold_3'): 0.36363636363636365,  ('hsa00970', 'fold_4'): 0.34848484848484851,  ('hsa00970', 'fold_5'): 0.36363636363636365,  ('hsa00970', 'fold_6'): 0.34848484848484851,  ('hsa00970', 'fold_7'): 0.42424242424242425,  ('hsa00970', 'fold_8'): 0.37878787878787878,  ('hsa00970', 'fold_9'): 0.39393939393939392,  ('hsa02010', 'fold_0'): 0.25,  ('hsa02010', 'fold_1'): 0.27272727272727271,  ('hsa02010', 'fold_2'): 0.25,  ('hsa02010', 'fold_3'): 0.27272727272727271,  ('hsa02010', 'fold_4'): 0.27272727272727271,  ('hsa02010', 'fold_5'): 0.27272727272727271,  ('hsa02010', 'fold_6'): 0.25,  ('hsa02010', 'fold_7'): 0.25,  ('hsa02010', 'fold_8'): 0.27272727272727271,  ('hsa02010', 'fold_9'): 0.25}, 73.564225445964055: {('hsa00970', 'fold_0'): 0.40909090909090912,  ('hsa00970', 'fold_1'): 0.46969696969696972,  ('hsa00970', 'fold_2'): 0.43939393939393939,  ('hsa00970', 'fold_3'): 0.45454545454545453,  ('hsa00970', 'fold_4'): 0.42424242424242425,  ('hsa00970', 'fold_5'): 0.42424242424242425,  ('hsa00970', 'fold_6'): 0.45454545454545453,  ('hsa00970', 'fold_7'): 0.45454545454545453,  ('hsa00970', 'fold_8'): 0.43939393939393939,  ('hsa00970', 'fold_9'): 0.43939393939393939,  ('hsa02010', 'fold_0'): 0.31818181818181818,  ('hsa02010', 'fold_1'): 0.31818181818181818,  ('hsa02010', 'fold_2'): 0.31818181818181818,  ('hsa02010', 'fold_3'): 0.27272727272727271,  ('hsa02010', 'fold_4'): 0.29545454545454547,  ('hsa02010', 'fold_5'): 0.31818181818181818,  ('hsa02010', 'fold_6'): 0.34090909090909088,  ('hsa02010', 'fold_7'): 0.34090909090909088,  ('hsa02010', 'fold_8'): 0.29545454545454547,  ('hsa02010', 'fold_9'): 0.34090909090909088}, 251.18864315095823: {('hsa00970', 'fold_0'): 0.59090909090909094,  ('hsa00970', 'fold_1'): 0.54545454545454541,  ('hsa00970', 'fold_2'): 0.5757575757575758,  ('hsa00970', 'fold_3'): 0.5,  ('hsa00970', 'fold_4'): 0.59090909090909094,  ('hsa00970', 'fold_5'): 0.56060606060606055,  ('hsa00970', 'fold_6'): 0.56060606060606055,  ('hsa00970', 'fold_7'): 0.54545454545454541,  ('hsa00970', 'fold_8'): 0.5757575757575758,  ('hsa00970', 'fold_9'): 0.56060606060606055,  ('hsa02010', 'fold_0'): 0.38636363636363635,  ('hsa02010', 'fold_1'): 0.38636363636363635,  ('hsa02010', 'fold_2'): 0.38636363636363635,  ('hsa02010', 'fold_3'): 0.38636363636363635,  ('hsa02010', 'fold_4'): 0.38636363636363635,  ('hsa02010', 'fold_5'): 0.38636363636363635,  ('hsa02010', 'fold_6'): 0.38636363636363635,  ('hsa02010', 'fold_7'): 0.38636363636363635,  ('hsa02010', 'fold_8'): 0.38636363636363635,  ('hsa02010', 'fold_9'): 0.38636363636363635}, 857.69589859089456: {('hsa00970', 'fold_0'): 0.59090909090909094,  ('hsa00970', 'fold_1'): 0.60606060606060608,  ('hsa00970', 'fold_2'): 0.62121212121212122,  ('hsa00970', 'fold_3'): 0.56060606060606055,  ('hsa00970', 'fold_4'): 0.62121212121212122,  ('hsa00970', 'fold_5'): 0.59090909090909094,  ('hsa00970', 'fold_6'): 0.62121212121212122,  ('hsa00970', 'fold_7'): 0.59090909090909094,  ('hsa00970', 'fold_8'): 0.60606060606060608,  ('hsa00970', 'fold_9'): 0.62121212121212122,  ('hsa02010', 'fold_0'): 0.38636363636363635,  ('hsa02010', 'fold_1'): 0.38636363636363635,  ('hsa02010', 'fold_2'): 0.38636363636363635,  ('hsa02010', 'fold_3'): 0.38636363636363635,  ('hsa02010', 'fold_4'): 0.38636363636363635,  ('hsa02010', 'fold_5'): 0.38636363636363635,  ('hsa02010', 'fold_6'): 0.38636363636363635,  ('hsa02010', 'fold_7'): 0.38636363636363635,  ('hsa02010', 'fold_8'): 0.38636363636363635,  ('hsa02010', 'fold_9'): 0.38636363636363635}, 2928.6445646252373: {('hsa00970', 'fold_0'): 0.62121212121212122,  ('hsa00970', 'fold_1'): 0.62121212121212122,  ('hsa00970', 'fold_2'): 0.62121212121212122,  ('hsa00970', 'fold_3'): 0.62121212121212122,  ('hsa00970', 'fold_4'): 0.62121212121212122,  ('hsa00970', 'fold_5'): 0.63636363636363635,  ('hsa00970', 'fold_6'): 0.63636363636363635,  ('hsa00970', 'fold_7'): 0.62121212121212122,  ('hsa00970', 'fold_8'): 0.62121212121212122,  ('hsa00970', 'fold_9'): 0.62121212121212122,  ('hsa02010', 'fold_0'): 0.38636363636363635,  ('hsa02010', 'fold_1'): 0.38636363636363635,  ('hsa02010', 'fold_2'): 0.38636363636363635,  ('hsa02010', 'fold_3'): 0.38636363636363635,  ('hsa02010', 'fold_4'): 0.38636363636363635,  ('hsa02010', 'fold_5'): 0.38636363636363635,  ('hsa02010', 'fold_6'): 0.38636363636363635,  ('hsa02010', 'fold_7'): 0.38636363636363635,  ('hsa02010', 'fold_8'): 0.38636363636363635,  ('hsa02010', 'fold_9'): 0.38636363636363635}, 10000.0: {('hsa00970', 'fold_0'): 0.62121212121212122,  ('hsa00970', 'fold_1'): 0.60606060606060608,  ('hsa00970', 'fold_2'): 0.62121212121212122,  ('hsa00970', 'fold_3'): 0.62121212121212122,  ('hsa00970', 'fold_4'): 0.62121212121212122,  ('hsa00970', 'fold_5'): 0.62121212121212122,  ('hsa00970', 'fold_6'): 0.62121212121212122,  ('hsa00970', 'fold_7'): 0.62121212121212122,  ('hsa00970', 'fold_8'): 0.62121212121212122,  ('hsa00970', 'fold_9'): 0.62121212121212122,  ('hsa02010', 'fold_0'): 0.38636363636363635,  ('hsa02010', 'fold_1'): 0.38636363636363635,  ('hsa02010', 'fold_2'): 0.38636363636363635,  ('hsa02010', 'fold_3'): 0.38636363636363635,  ('hsa02010', 'fold_4'): 0.38636363636363635,  ('hsa02010', 'fold_5'): 0.38636363636363635,  ('hsa02010', 'fold_6'): 0.38636363636363635,  ('hsa02010', 'fold_7'): 0.38636363636363635,  ('hsa02010', 'fold_8'): 0.38636363636363635,  ('hsa02010', 'fold_9'): 0.38636363636363635}})

precisions = pd.DataFrame.from_dict({0.0001: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.00034145488738336009: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.0011659144011798312: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.0039810717055349734: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.013593563908785255: {('hsa00970', 'fold_0'): 0.0,  ('hsa00970', 'fold_1'): 0.0,  ('hsa00970', 'fold_2'): 0.0,  ('hsa00970', 'fold_3'): 0.0,  ('hsa00970', 'fold_4'): 0.0,  ('hsa00970', 'fold_5'): 0.0,  ('hsa00970', 'fold_6'): 0.0,  ('hsa00970', 'fold_7'): 0.0,  ('hsa00970', 'fold_8'): 0.0,  ('hsa00970', 'fold_9'): 0.0,  ('hsa02010', 'fold_0'): 0.0,  ('hsa02010', 'fold_1'): 0.0,  ('hsa02010', 'fold_2'): 0.0,  ('hsa02010', 'fold_3'): 0.0,  ('hsa02010', 'fold_4'): 0.0,  ('hsa02010', 'fold_5'): 0.0,  ('hsa02010', 'fold_6'): 0.0,  ('hsa02010', 'fold_7'): 0.0,  ('hsa02010', 'fold_8'): 0.0,  ('hsa02010', 'fold_9'): 0.0}, 0.046415888336127774: {('hsa00970', 'fold_0'): 0.25,  ('hsa00970', 'fold_1'): 0.5,  ('hsa00970', 'fold_2'): 0.33333333333333331,  ('hsa00970', 'fold_3'): 0.33333333333333331,  ('hsa00970', 'fold_4'): 0.33333333333333331,  ('hsa00970', 'fold_5'): 0.33333333333333331,  ('hsa00970', 'fold_6'): 0.33333333333333331,  ('hsa00970', 'fold_7'): 0.33333333333333331,  ('hsa00970', 'fold_8'): 0.5,  ('hsa00970', 'fold_9'): 0.33333333333333331,  ('hsa02010', 'fold_0'): 0.66666666666666663,  ('hsa02010', 'fold_1'): 0.5,  ('hsa02010', 'fold_2'): 0.40000000000000002,  ('hsa02010', 'fold_3'): 0.33333333333333331,  ('hsa02010', 'fold_4'): 0.5,  ('hsa02010', 'fold_5'): 0.33333333333333331,  ('hsa02010', 'fold_6'): 0.5,  ('hsa02010', 'fold_7'): 0.66666666666666663,  ('hsa02010', 'fold_8'): 0.5,  ('hsa02010', 'fold_9'): 0.5}, 0.15848931924611143: {('hsa00970', 'fold_0'): 0.32142857142857145,  ('hsa00970', 'fold_1'): 0.32000000000000001,  ('hsa00970', 'fold_2'): 0.26666666666666666,  ('hsa00970', 'fold_3'): 0.35999999999999999,  ('hsa00970', 'fold_4'): 0.34615384615384615,  ('hsa00970', 'fold_5'): 0.40000000000000002,  ('hsa00970', 'fold_6'): 0.29629629629629628,  ('hsa00970', 'fold_7'): 0.31034482758620691,  ('hsa00970', 'fold_8'): 0.32142857142857145,  ('hsa00970', 'fold_9'): 0.32142857142857145,  ('hsa02010', 'fold_0'): 0.16129032258064516,  ('hsa02010', 'fold_1'): 0.21739130434782608,  ('hsa02010', 'fold_2'): 0.22222222222222221,  ('hsa02010', 'fold_3'): 0.21428571428571427,  ('hsa02010', 'fold_4'): 0.17142857142857143,  ('hsa02010', 'fold_5'): 0.14814814814814814,  ('hsa02010', 'fold_6'): 0.17241379310344829,  ('hsa02010', 'fold_7'): 0.21428571428571427,  ('hsa02010', 'fold_8'): 0.17241379310344829,  ('hsa02010', 'fold_9'): 0.16666666666666666}, 0.54116952654646377: {('hsa00970', 'fold_0'): 0.27906976744186046,  ('hsa00970', 'fold_1'): 0.31111111111111112,  ('hsa00970', 'fold_2'): 0.23255813953488372,  ('hsa00970', 'fold_3'): 0.31818181818181818,  ('hsa00970', 'fold_4'): 0.27272727272727271,  ('hsa00970', 'fold_5'): 0.30769230769230771,  ('hsa00970', 'fold_6'): 0.21739130434782608,  ('hsa00970', 'fold_7'): 0.23255813953488372,  ('hsa00970', 'fold_8'): 0.30232558139534882,  ('hsa00970', 'fold_9'): 0.30434782608695654,  ('hsa02010', 'fold_0'): 0.19047619047619047,  ('hsa02010', 'fold_1'): 0.15555555555555556,  ('hsa02010', 'fold_2'): 0.17391304347826086,  ('hsa02010', 'fold_3'): 0.17777777777777778,  ('hsa02010', 'fold_4'): 0.15384615384615385,  ('hsa02010', 'fold_5'): 0.15384615384615385,  ('hsa02010', 'fold_6'): 0.17999999999999999,  ('hsa02010', 'fold_7'): 0.19148936170212766,  ('hsa02010', 'fold_8'): 0.16,  ('hsa02010', 'fold_9'): 0.17391304347826086}, 1.8478497974222907: {('hsa00970', 'fold_0'): 0.30909090909090908,  ('hsa00970', 'fold_1'): 0.30188679245283018,  ('hsa00970', 'fold_2'): 0.2807017543859649,  ('hsa00970', 'fold_3'): 0.31034482758620691,  ('hsa00970', 'fold_4'): 0.2807017543859649,  ('hsa00970', 'fold_5'): 0.24590163934426229,  ('hsa00970', 'fold_6'): 0.23636363636363636,  ('hsa00970', 'fold_7'): 0.2413793103448276,  ('hsa00970', 'fold_8'): 0.28333333333333333,  ('hsa00970', 'fold_9'): 0.26666666666666666,  ('hsa02010', 'fold_0'): 0.14035087719298245,  ('hsa02010', 'fold_1'): 0.14754098360655737,  ('hsa02010', 'fold_2'): 0.14035087719298245,  ('hsa02010', 'fold_3'): 0.13333333333333333,  ('hsa02010', 'fold_4'): 0.125,  ('hsa02010', 'fold_5'): 0.12698412698412698,  ('hsa02010', 'fold_6'): 0.15254237288135594,  ('hsa02010', 'fold_7'): 0.13846153846153847,  ('hsa02010', 'fold_8'): 0.13114754098360656,  ('hsa02010', 'fold_9'): 0.13333333333333333}, 6.3095734448019298: {('hsa00970', 'fold_0'): 0.25,  ('hsa00970', 'fold_1'): 0.26923076923076922,  ('hsa00970', 'fold_2'): 0.28205128205128205,  ('hsa00970', 'fold_3'): 0.2857142857142857,  ('hsa00970', 'fold_4'): 0.26027397260273971,  ('hsa00970', 'fold_5'): 0.22727272727272727,  ('hsa00970', 'fold_6'): 0.22972972972972974,  ('hsa00970', 'fold_7'): 0.21917808219178081,  ('hsa00970', 'fold_8'): 0.24358974358974358,  ('hsa00970', 'fold_9'): 0.2413793103448276,  ('hsa02010', 'fold_0'): 0.10714285714285714,  ('hsa02010', 'fold_1'): 0.12048192771084337,  ('hsa02010', 'fold_2'): 0.11363636363636363,  ('hsa02010', 'fold_3'): 0.13333333333333333,  ('hsa02010', 'fold_4'): 0.11904761904761904,  ('hsa02010', 'fold_5'): 0.10588235294117647,  ('hsa02010', 'fold_6'): 0.13698630136986301,  ('hsa02010', 'fold_7'): 0.12658227848101267,  ('hsa02010', 'fold_8'): 0.12195121951219512,  ('hsa02010', 'fold_9'): 0.12121212121212122}, 21.544346900318821: {('hsa00970', 'fold_0'): 0.24358974358974358,  ('hsa00970', 'fold_1'): 0.25252525252525254,  ('hsa00970', 'fold_2'): 0.23684210526315788,  ('hsa00970', 'fold_3'): 0.22641509433962265,  ('hsa00970', 'fold_4'): 0.23000000000000001,  ('hsa00970', 'fold_5'): 0.23529411764705882,  ('hsa00970', 'fold_6'): 0.19327731092436976,  ('hsa00970', 'fold_7'): 0.2413793103448276,  ('hsa00970', 'fold_8'): 0.22935779816513763,  ('hsa00970', 'fold_9'): 0.25,  ('hsa02010', 'fold_0'): 0.086614173228346455,  ('hsa02010', 'fold_1'): 0.093023255813953487,  ('hsa02010', 'fold_2'): 0.090163934426229511,  ('hsa02010', 'fold_3'): 0.11009174311926606,  ('hsa02010', 'fold_4'): 0.095238095238095233,  ('hsa02010', 'fold_5'): 0.10434782608695652,  ('hsa02010', 'fold_6'): 0.098214285714285712,  ('hsa02010', 'fold_7'): 0.085271317829457363,  ('hsa02010', 'fold_8'): 0.10344827586206896,  ('hsa02010', 'fold_9'): 0.10000000000000001}, 73.564225445964055: {('hsa00970', 'fold_0'): 0.18243243243243243,  ('hsa00970', 'fold_1'): 0.20000000000000001,  ('hsa00970', 'fold_2'): 0.19078947368421054,  ('hsa00970', 'fold_3'): 0.1875,  ('hsa00970', 'fold_4'): 0.1891891891891892,  ('hsa00970', 'fold_5'): 0.17948717948717949,  ('hsa00970', 'fold_6'): 0.1875,  ('hsa00970', 'fold_7'): 0.18633540372670807,  ('hsa00970', 'fold_8'): 0.1858974358974359,  ('hsa00970', 'fold_9'): 0.18831168831168832,  ('hsa02010', 'fold_0'): 0.072164948453608241,  ('hsa02010', 'fold_1'): 0.06965174129353234,  ('hsa02010', 'fold_2'): 0.064516129032258063,  ('hsa02010', 'fold_3'): 0.1111111111111111,  ('hsa02010', 'fold_4'): 0.06280193236714976,  ('hsa02010', 'fold_5'): 0.070707070707070704,  ('hsa02010', 'fold_6'): 0.068493150684931503,  ('hsa02010', 'fold_7'): 0.071090047393364927,  ('hsa02010', 'fold_8'): 0.067010309278350513,  ('hsa02010', 'fold_9'): 0.069767441860465115}, 251.18864315095823: {('hsa00970', 'fold_0'): 0.11304347826086956,  ('hsa00970', 'fold_1'): 0.12811387900355872,  ('hsa00970', 'fold_2'): 0.1144578313253012,  ('hsa00970', 'fold_3'): 0.13580246913580246,  ('hsa00970', 'fold_4'): 0.11174785100286533,  ('hsa00970', 'fold_5'): 0.10882352941176471,  ('hsa00970', 'fold_6'): 0.13962264150943396,  ('hsa00970', 'fold_7'): 0.10778443113772455,  ('hsa00970', 'fold_8'): 0.11377245508982035,  ('hsa00970', 'fold_9'): 0.13909774436090225,  ('hsa02010', 'fold_0'): 0.033333333333333333,  ('hsa02010', 'fold_1'): 0.041975308641975309,  ('hsa02010', 'fold_2'): 0.047752808988764044,  ('hsa02010', 'fold_3'): 0.046831955922865015,  ('hsa02010', 'fold_4'): 0.043589743589743588,  ('hsa02010', 'fold_5'): 0.045092838196286469,  ('hsa02010', 'fold_6'): 0.050746268656716415,  ('hsa02010', 'fold_7'): 0.043701799485861184,  ('hsa02010', 'fold_8'): 0.044270833333333336,  ('hsa02010', 'fold_9'): 0.040094339622641507}, 857.69589859089456: {('hsa00970', 'fold_0'): 0.079918032786885251,  ('hsa00970', 'fold_1'): 0.085106382978723402,  ('hsa00970', 'fold_2'): 0.056164383561643834,  ('hsa00970', 'fold_3'): 0.07922912205567452,  ('hsa00970', 'fold_4'): 0.058404558404558403,  ('hsa00970', 'fold_5'): 0.077689243027888447,  ('hsa00970', 'fold_6'): 0.05631868131868132,  ('hsa00970', 'fold_7'): 0.080745341614906832,  ('hsa00970', 'fold_8'): 0.07407407407407407,  ('hsa00970', 'fold_9'): 0.056786703601108032,  ('hsa02010', 'fold_0'): 0.020214030915576695,  ('hsa02010', 'fold_1'): 0.019675925925925927,  ('hsa02010', 'fold_2'): 0.018784530386740331,  ('hsa02010', 'fold_3'): 0.020094562647754138,  ('hsa02010', 'fold_4'): 0.018008474576271187,  ('hsa02010', 'fold_5'): 0.020023557126030624,  ('hsa02010', 'fold_6'): 0.020681265206812651,  ('hsa02010', 'fold_7'): 0.018847006651884702,  ('hsa02010', 'fold_8'): 0.020047169811320754,  ('hsa02010', 'fold_9'): 0.018660812294182216}, 2928.6445646252373: {('hsa00970', 'fold_0'): 0.027260638297872342,  ('hsa00970', 'fold_1'): 0.024624624624624624,  ('hsa00970', 'fold_2'): 0.02634961439588689,  ('hsa00970', 'fold_3'): 0.027498323272971161,  ('hsa00970', 'fold_4'): 0.025529265255292654,  ('hsa00970', 'fold_5'): 0.027027027027027029,  ('hsa00970', 'fold_6'): 0.026802807913209957,  ('hsa00970', 'fold_7'): 0.025497512437810944,  ('hsa00970', 'fold_8'): 0.025339925834363411,  ('hsa00970', 'fold_9'): 0.028413028413028413,  ('hsa02010', 'fold_0'): 0.0070744902205576365,  ('hsa02010', 'fold_1'): 0.0065284178187403992,  ('hsa02010', 'fold_2'): 0.0077661032434901784,  ('hsa02010', 'fold_3'): 0.0069987649238369698,  ('hsa02010', 'fold_4'): 0.0070393374741200831,  ('hsa02010', 'fold_5'): 0.0077554744525547446,  ('hsa02010', 'fold_6'): 0.0069246435845213847,  ('hsa02010', 'fold_7'): 0.0070510161758606388,  ('hsa02010', 'fold_8'): 0.0073848827106863593,  ('hsa02010', 'fold_9'): 0.0072805139186295506}, 10000.0: {('hsa00970', 'fold_0'): 0.023713128976286871,  ('hsa00970', 'fold_1'): 0.023626698168930892,  ('hsa00970', 'fold_2'): 0.025673137132122732,  ('hsa00970', 'fold_3'): 0.024463007159904536,  ('hsa00970', 'fold_4'): 0.026902887139107611,  ('hsa00970', 'fold_5'): 0.024061032863849766,  ('hsa00970', 'fold_6'): 0.024728588661037394,  ('hsa00970', 'fold_7'): 0.024217365623154165,  ('hsa00970', 'fold_8'): 0.024565608148591971,  ('hsa00970', 'fold_9'): 0.024217365623154165,  ('hsa02010', 'fold_0'): 0.0076267384477344104,  ('hsa02010', 'fold_1'): 0.0063598952487841373,  ('hsa02010', 'fold_2'): 0.0074528715475668562,  ('hsa02010', 'fold_3'): 0.0068273092369477914,  ('hsa02010', 'fold_4'): 0.0071458596048759983,  ('hsa02010', 'fold_5'): 0.007417102966841187,  ('hsa02010', 'fold_6'): 0.006716712761754247,  ('hsa02010', 'fold_7'): 0.0064418340280409242,  ('hsa02010', 'fold_8'): 0.0075791350869371379,  ('hsa02010', 'fold_9'): 0.006508422664624809}})
Alex Lenail
  • 12,992
  • 10
  • 47
  • 79
  • I do not understand what you are trying to achieve? What should be plotted against what and in how many plots? – ImportanceOfBeingErnest Oct 25 '17 at 15:26
  • I want to plot 1 line for each row of the two dataframes, where one dataframe is the x values of points, and 1 dataframe is the y value of points. i.e. `plt.plot(x=df1.iloc[k], y=df2.iloc[k])` for every k (for every row). But I'm hoping there's a better/cleaner way to think about this problem and make this plot. Perhaps that's not the case, in which case that would be a valid answer... – Alex Lenail Oct 25 '17 at 15:32
  • What's not clear is what the x value and y value should be. Are the x values the column headers? Or are they the `precisions` values? If the latter, what do the column headers mean? – ASGM Oct 25 '17 at 15:33
  • @ASGM Sorry that wasn't clear! The column headers are not important, the values in each of the dataframes are what I want to plot, where one dataframe has the x coordinates for the points, and one has the y coordinates for the point. Each row is a group of points which should be drawn as a curve. That means the resulting figure I want should be a bunch of curves. – Alex Lenail Oct 25 '17 at 15:37

2 Answers2

1

One way to achieve this would be to stack the columns so you have two series, one for precisions and one for recalls, and merging those series. Then you have a dataframe with a three-level MultiIndex, where columns have been transformed into rows. Then you can groupby the original columns and plot the new columns against each other, using code from @unutbu's answer to this question:

df = pd.concat([precisions.stack(), recalls.stack()], 
    keys=['precisions','recalls'], axis=1)
df.index.names = ['hsa', 'fold', 'original_columns']

fig, ax = plt.subplots()
labels = []
for key, grp in df.groupby(level=['hsa', 'fold']):
    ax = grp.plot(ax=ax, kind='line', x='precisions', y='recalls')
    labels.append(key)
    print grp

lines, _ = ax.get_legend_handles_labels()
ax.legend(lines, labels, loc='best')
plt.show()

This plot looks kind of messy when I do it, but I think that's a function of the data and not the plotting method.

ASGM
  • 11,051
  • 1
  • 32
  • 53
0

I think I was overthinking this, and expected plt.plot for many thousands of lines to be slow, but it was not all that slow.

[plt.plot(recalls.iloc[k].values, precisions.iloc[k].values, c='b', alpha=0.01) for k in range(len(recalls))]

plt.xlabel('Recall')
plt.ylabel('Precision')
plt.ylim([0.0, 1.05])
plt.xlim([0.0, 1.05])

was sufficient.

Alex Lenail
  • 12,992
  • 10
  • 47
  • 79