绘制matplotlib / pandas中的阶段变化

时间:2014-11-19 00:06:10

标签: python matplotlib pandas

我希望能够使用matplotlib& pandas根据谷歌电子表格中的动态数据创建图表。我已经成功地使用gspread查询电子表格,保存到csv和绘图,但是还没有能够为相变线提出解决方法。以下是格式示例:http://www.ebbp.org/course_outlines/critical_appraisal/pdfs/SSRD-1.gif无论比例是在日期还是会话中,相变线都需要介于x轴值之间。数据路径也无法跨相变线连接。

以下是我目前正在使用的代码

  import gspread
    import csv
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import getpass


    usernm = raw_input("Enter Username")
    pw = getpass.getpass("Enter password for user %s: " % usernm)
    gc = gspread.login(usernm, pw)

    client = raw_input("Which client profile would you like to see?")

    wks = gc.open(client)

    for i, worksheet in enumerate(wks.worksheets()):
        filename = client + '-worksheet' + str(i) + '.csv'
        with open(filename, 'wb') as f:
            writer = csv.writer(f)
            writer.writerows(worksheet.get_all_values())

    df = pd.read_csv('CSV FILE HERE', sep=',')        

    df.plot(x='Date', grid=False, marker='o', color='k', title='Hello')

    plt.show()

我从使用谷歌的可视化API转移到python和matplotlib因为我认为它有更多的功能和特性来实现这一点,但我无法想到。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

对于那些希望将来能够做到这一点的人来说,我发现这个主题很有帮助:vertical & horizontal lines in matplotlib

这是一个可行的解决方案:

plt.axvline(x=2.5, ymin=0, ymax = 1.0, linewidth=1, color='k')

仍然试图弄清楚如何不连接数据路径(插入空值除外)

答案 1 :(得分:0)

在你的答案中说明你的最后一条评论,让我们说你有以下阶段的变化

changes = [20,35,55]

你可以像这样绘制未连接的部分

first = 0
for c in changes:
    plt.plot(x[first:c], y[first:c])
    first = c+1
plt.plot(x[first:],y[first:])