【发布时间】:2018-03-25 11:04:45
【问题描述】:
对 Python、Pandas 和 matplotlib/seaborn 有点陌生,所以请耐心等待。
我有一个包含 65k 行的数据框
我正在尝试将其绘制在堆积条形图中
我已经使用了这些初始设置(没有它们看起来比使用它们更糟糕)我尝试一次将它们剪掉一个,看看我是否可以使用 seaborn 来简化我的故障排除,但看起来像我真的需要他们全部来使这个显示器甚至 ½ 体面
#required libraries:
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#for some improved visuals
import seaborn as sns
from pylab import rcParams
#this line enables the plots to be embedded into the notebook
%matplotlib inline
# Set some options as I have been used to having them
pd.set_option('html', True)
pd.set_option('max_columns', 40)
pd.set_option('max_rows', 20)
sns.set(style="ticks")
matplotlib.style.use('ggplot')
rcParams['figure.figsize'] = 15, 10
rcParams['font.size'] = 20
rcParams['axes.facecolor'] = 'white'
我的数据分组代码如下所示:
HouseholdIncomeVSOccupation = workingdata.groupby(['house INCOME'
, 'OCCUPATION_M'])['house INCOME'].count().unstack('OCCUPATION_M')
我绘制图表的代码如下所示:
colors = ['#0066CC', '#33FF33', '#FF99CC', '#FDEBD0', '#CC9933'
, '#FF0000', 'black', '#3333FF', 'grey', '#CC66FF'
, '#339900','#FF3399','#FFFF66','#990000']
HouseholdIncomeVSOccupation.plot(kind='bar', stacked=True, color=colors)
我想加个标题
plt.title('Household Income VS Occupation')
我不太明白为什么我的绘图代码使它成为一个子图,我确实意识到这是因为它是一个子图,我在上面有一个带有标题的空图。
我想格式化一些东西:
- 我真的只是希望标题显示在我的第一个图表上 - 因此,如果有人能告诉我如何在子图中设置标题而不是为整个图表设置标题,那将可以正常工作。更好一点的是告诉我如何将其作为主图而不是子图。
- 我想将图例移到图表外,理想情况下位于图表空间下方,条目从左到右排列在几行上(有点像 Excel 所做的)。这可能太难了(因为代码太多而无法正常工作),在这种情况下,将图例放在右侧的图表之外将是下一个最佳选择(希望这是一个简单的 1 班轮)。
- 我想为每个轴命名
我非常感谢这里的社区提供的帮助,我非常享受我的 Python 探索之旅。我只需要让其中一些更快地工作,而不是像我迄今为止那样学习它。当然喜欢能够快速轻松地处理数百万行中的数据帧。
编辑: 这是得到ImportanceOfBeingErnest答案后的工作代码
colors = ['#0066CC', '#33FF33', '#FF99CC', '#FDEBD0', '#CC9933',
'#FF0000', 'black', '#3333FF', 'grey', '#CC66FF', '#339900',
'#FF3399','#FFFF66','#990000']
ax = HouseholdIncomeVSOccupation.plot(kind='bar', stacked=True, color=colors)
ax.set_title('Household Income VS Occupation')
ax.set_xlabel('Household Income')
ax.set_ylabel('Count')
plt.legend(bbox_to_anchor=(1.04,0.5), loc="center left", borderaxespad=0)
我点击了他关于如何格式化图例的其他优秀答案的链接。这给出了最后一行工作代码......
【问题讨论】:
标签: python matplotlib charts seaborn