pandas - 条形图 matplotlib 中类别的颜色
问题描述
我想制作我的条形图,以便我的颜色与类别匹配,只是我通过我的数据框进行切片和分组以重新组织它。已经用一些代码取得了一些成果。但是我的代码太古怪了,我想知道是否有办法让它变得更好。
pokecolor = {'Grass': '#78C850', 'Normal':'#A8A878','Fire':'#F08030','Fighting':'#C03028','Water':'#6890F0', 'Flying':'#A890F0','Poison':'#A040A0','Electric':'#F8D030','Ground':'#E0C068','Psychic':'#F85880','Rock':'#B8A038','Ice':'#98D8D8','Bug':'#A8B820','Dragon':'#7038F8','Ghost':'#705898','Dark':'#705848','Steel':'#B8B8D0','Fairy':'#EE99AC'}
df_poke['Type 1 color'] = df_poke['Type 1'].map(lambda x: pokecolor[x])
tipo1 = df_poke.loc[:,'Type 1'].value_counts(ascending=True)
tipo1.plot(kind='barh', grid=True, figsize=(15,8),
xticks= [n for n in range(0,111, 10)],
color=tipo1.reset_index()['index'].apply(lambda x : pokecolor[x]))
我不想使用“tipo1”,重置它的索引并对其应用 pokecolor。
解决方案
当您绘制 aSeries
时,bar
它将为每个条使用不同的颜色。通过提供一个在.value_counts
索引上对齐的新列表来覆盖这些颜色:
样本数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(123)
df = pd.DataFrame({'Type 1': np.random.choice(list(pokecolor.keys()), 600)})
代码:
s = df['Type 1'].value_counts()
s.plot(kind='barh', figsize=(6,5), color=s.index.map(pokecolor))
plt.show()
输出:
推荐阅读
- javascript - 浏览器同步 webpack 插件不工作
- javascript - 检测是否启用了 webgl 硬件加速
- typescript - 如何使打字稿推断出更具体的类属性类型?
- java - spring cloud config在379:64处抛出Bad Base64输入字符
- php - Laravel 5.5分页响应json返回消息:方法视图不存在状态码500
- node.js - Node.js 安装(Windows 安装程序)在 Windows 10 64 位上过早终止
- neo4j - Neo4j Cypher 手动关系索引、APOC 触发器和数据复制
- python - 你如何在 Python Pandas 中进行分组、排序和限制?(即获得前 10 名)
- c++ - 如何为字符串处理创建流操纵器?
- python - python scrapy 使用 pyinstaller 转换为 exe 文件