やりたいこと
matplotlibのsquarifyを使用して、nameの列に対応するcolorを指定したいと思っております。
また、plotの際にはlabelも指定したいです。
df
no name counts Percentage id Label
0 CA 34 sa 3 CA (3)\n (0.1%)
1 CP 44 3.5 7 CP (7)\n (3.5%)
2 KR 33 3.5 6 KR (6)\n (3.5%)
3 DI 20 7.9 5 DI (5)\n (7.9%)
4 UP 1 3.6 4 UP (4)\n (3.6%)
5 FO 10 11.7 1 FO (1)\n (11.7%)
6 NA 26 0.4 8 NA (8)\n (0.4%)
7 MO 199 36.2 0 MO (0)\n (36.2%)
8 DN 315 36.2 99 DN (99)\n (36.2%)
9 OT 9 0.7 11 OT (11)\n (0.7%)
10 PR 72 30.4 2 PR (2)\n (30.4%)
11 LR 52 1.2 9 LR (9)\n (1.2%)
12 AR 13 0.6 12 AR (12)\n (0.6%)
試したこと
コード
①nameとcolorは想定通りだが、labelをdfから指定することが出来ない
squarify.plot(sizes=df['counts'].values.tolist(),
label=['CA', 'CP', 'KR', 'DI', 'UP', 'FO', 'NA', 'MO', 'DN', 'OT', 'PR', 'LR', 'AR'], color=['lightpink', 'green', 'dodgerblue', 'darkorange', 'gold', 'green', 'lightcoral', 'lightpink', 'green', 'slategray', 'aliceblue', 'green', 'aliceblue'], alpha=.8)
②labelをdfから指定することが出来るが色が想定外
df = ex.groupby('a').size().reset_index(name='counts')
labels = df.apply(lambda x:"\n (" + str(x[1]) + ")", axis=1)
squarify.plot(sizes=df['counts'].values.tolist(),
label=['CA', 'CP', 'KR', 'DI', 'UP', 'FO', 'NA', 'MO', 'DN', 'OT', 'PR', 'LR', 'AR'], color=['lightpink', 'green', 'dodgerblue', 'darkorange', 'gold', 'green', 'lightcoral', 'lightpink', 'green', 'slategray', 'aliceblue', 'green', 'aliceblue'], alpha=.8)
考えていること
②の方法にnameに対応するcolorを引いてこれれば良いと考えていますが、なにか良い方法がございましたらご教示頂けましたら幸いです。
参考
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。