【发布时间】:2017-11-03 08:26:21
【问题描述】:
我想使用matplotlib 生成带有分类行和列标签的 pandas DataFrame 散点图。示例 DataFrame 如下所示:
import pandas as pd
df = pd.DataFrame({"a": [1,2], "b": [3,4]}, index=["c","d"])
# a b
#c 1 2
#d 3 4
标记大小是各个 DataFrame 值的函数。到目前为止,我想出了一个笨拙的解决方案,它本质上是枚举行和列,绘制数据,然后重建标签:
flat = df.reset_index(drop=True).T.reset_index(drop=True).T.stack().reset_index()
# level_0 level_1 0
#0 0 0 1
#1 0 1 2
#2 1 0 3
#3 1 1 4
flat.plot(kind='scatter', x='level_0', y='level_1', s=100*flat[0])
plt.xticks(range(df.shape[1]), df.columns)
plt.yticks(range(df.shape[0]), df.index)
plt.show()
现在,问题:有没有更直观、更集成的方法来生成这个散点图,最好不要拆分数据和元数据?
【问题讨论】:
-
我认为我们不能使用非数字数据进行绘图。 AFAIK 无论如何,您都必须单独设置刻度...
-
我猜这个问题翻译成“为什么还没有库实现我的自定义绘图愿望功能?”。
标签: python pandas matplotlib dataframe scatter-plot