Что-то вроде этого: Как сделать вафельные диаграммы в python? (Квадрат PieChart)
Существует очень хороший пакет to do it in R. В питона, самое лучшее, что я мог бы выяснить это, используя squarify
пакет (вдохновленный a post on how to do treemaps):
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns # just to have better line color and width
import squarify
# for those using jupyter notebooks
%matplotlib inline
df = pd.DataFrame({
'v1': np.ones(100),
'v2': np.random.randint(1, 4, 100)})
df.sort_values(by='v2', inplace=True)
# color scale
cmap = mpl.cm.Accent
mini, maxi = df['v2'].min(), df['v2'].max()
norm = mpl.colors.Normalize(vmin=mini, vmax=maxi)
colors = [cmap(norm(value)) for value in df['v2']]
# figure
fig = plt.figure()
ax = fig.add_subplot(111, aspect="equal")
ax = squarify.plot(df['v1'], color=colors, ax=ax)
ax.set_xticks([])
ax.set_yticks([]);
Но когда я создаю не 100, а 200 элементов (или другой неквадрат чисел), квадраты становятся несогласованными.
Другая проблема заключается в том, что если я изменю v2 до некоторой категориальной переменной (например, сто As, Bs, Cs и Ds), я получаю эту ошибку:
could not convert string to float: 'a'
Таким образом, может кто поможет мне с этими двумя вопросами:
- Как я могу решить проблему выравнивания с не квадратными числами наблюдений?
- Как использовать категориальные переменные в v2?
Помимо этого, я действительно открыт, если есть какие-либо другие пакеты python, которые могут более эффективно создавать участки вафель.
[Здесь] (http://bokeh.pydata.org/en/latest/docs/gallery/unemployment.html) является примером, использующим 'bokeh' ... Вам нужно немного настроить его, чтобы получить пропорциональный вид, но да, это можно сделать в Python. – blacksite
Спасибо @not_a_robot, я попробую боке на этой неделе. – lincolnfrias
200 не является квадратным числом –