簡體   English   中英

Python + Matplotlib:多級樹形圖?

[英]Python + Matplotlib: multi-level treemap plot?

我最近從https://www.kaggle.com/philippsp/exploratory-analysis-instacart看到了這個樹形圖(兩個層次結構,彩色,方形樹形圖)。

它是用 R ggplot2::treemap制作的,由:

treemap(tmp,index=c("department","aisle"),vSize="n",title="",
        palette="Set3",border.col="#FFFFFF")

我想知道如何在 Python 中制作這個圖?


我搜索了一下,但沒有找到任何多級樹形圖示例。

您可以巧妙地使用。 在這里你可以找到幾個例子。

https://plotly.com/python/treemaps/

這是一個非常簡單的多級結構示例。

import plotly.express as px
import pandas as pd
from collections import defaultdict

data = defaultdict()

data['level_1'] = ['A', 'A', 'A', 'B', 'B', 'B']
data['level_2'] = ['X', 'X', 'Y', 'Z', 'Z', 'X']
data['level_3'] = ['1', '2', '2', '1', '1', '2']

data =  pd.DataFrame.from_dict(data)
fig = px.treemap(data, path=['level_1', 'level_2', 'level_3'])
fig.show()

這就是它的樣子

matplotlib-extra提供了一個支持多級樹形圖繪圖的treemap函數。 對於G20的數據集, treemap可以產生類似的 treemap,如:

import matplotlib.pyplot as plt
import mpl_extra.treemap as tr

fig, ax = plt.subplots(figsize=(7,7), dpi=100, subplot_kw=dict(aspect=1.156))

trc = tr.treemap(ax, df, area='gdp_mil_usd', fill='hdi', labels='country',
           levels=['region', 'country'],
           textprops={'c':'w', 'wrap':True,
                      'place':'top left', 'max_fontsize':20},
           rectprops={'ec':'w'},
           subgroup_rectprops={'region':{'ec':'grey', 'lw':2, 'fill':False,
                                         'zorder':5}},
           subgroup_textprops={'region':{'c':'k', 'alpha':0.5, 'fontstyle':'italic'}},
           )

ax.axis('off')

cb = fig.colorbar(trc.mappable, ax=ax, shrink=0.5)

cb.ax.set_title('hdi')
cb.outline.set_edgecolor('w')

plt.show()

得到的treemap如下:

在此處輸入圖像描述

有關更多信息,您可以查看項目,其中有一些示例。 源代碼有一個 api 文檔字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM