因此,我在不同时间对数据集进行了多次采样。 对于每个采样,我想绘制一个散射矩阵,每个散射矩阵应该将采样时间作为标题。
问题是没有争论"标题" pandas.tools.plotting.scatter_matrix
当我在绘制图形之前尝试打印()标题时,它会在绘制图形之前打印所有标题。
for qid in qids:
date = db[collection].find_one({ "querySummary.qid": qid }, {"querySummary.date":1})["querySummary"]["date"].isoformat()
print(date) # does not provide the desired result
cursor = db[collection].find({ "querySummary.qid": qid })
cols = ["resultNum", "col2", "col3", "col4"] # list of columns labels
rows = [] # will be populated below
for result in cursor:
rows.append([result["resultNum"], result["col2"], result["col3"], result["col4"]])
df = pd.DataFrame(rows, columns=cols);
scatter_matrix(df, alpha=0.3, figsize=(16,16), diagonal='kde', marker=date)
通过运行代码,在最终绘制第一个scatter_matrix之前打印标题:
有什么想法吗?
答案 0 :(得分:2)
在这种情况下,您不能使用print(date)
。相反,请为下面的每个plt.suptitle(date)
尝试scatter_matrix
。
for qid in qids:
date = db[collection].find_one({ "querySummary.qid": qid }, {"querySummary.date":1})["querySummary"]["date"].isoformat()
cursor = db[collection].find({ "querySummary.qid": qid })
cols = ["resultNum", "col2", "col3", "col4"] # list of columns labels
rows = [] # will be populated below
for result in cursor:
rows.append([result["resultNum"], result["col2"], result["col3"], result["col4"]])
df = pd.DataFrame(rows, columns=cols);
scatter_matrix(df, alpha=0.3, figsize=(16,16), diagonal='kde', marker='o')
plt.suptitle(date)
答案 1 :(得分:1)
对于你的情况,我认为最好的方法是直接用matplotlib绘图,而不是使用熊猫的情节。请参阅:http://pandas.pydata.org/pandas-docs/stable/visualization.html#plotting-directly-with-matplotlib
您可能需要尝试类似
的内容dummy = scatter_matrix(df, alpha=0.3, figsize=(16,16), diagonal='kde', marker=date)
plt.figure()
plt.title(date)
plt.plot(dummy)
plt.show()