我希望能够使用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因为我认为它有更多的功能和特性来实现这一点,但我无法想到。有什么想法吗?
答案 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:])