繁体   English   中英

如何仅使用 seaborn 创建附加的条形图

[英]How to create the attached barplot using only seaborn

我正在为示例数据和我需要的绘图附加图像。 我真的很困惑如何在 seaborn 中实现这种多变量条形图,因为 Sales2015 和 Sales2016 都是连续变量,而我们只有一个分类变量,即区域。

 <style type="text/css"> table.tableizer-table { font-size: 12px; border: 1px solid #CCC; font-family: Arial, Helvetica, sans-serif; } .tableizer-table td { padding: 4px; margin: 3px; border: 1px solid #CCC; } .tableizer-table th { background-color: #104E8B; color: #FFF; font-weight: bold; } </style> <table class="tableizer-table"> <thead><tr class="tableizer-firstrow"><th>AccountId</th><th>AccountName</th><th>Region</th><th>Division</th><th>City</th><th>State</th><th>Tier</th><th>Month</th><th>Sales2015</th><th>Sales2016</th><th>Units2015</th><th>Units2016</th><th>TargetAchevied2015</th><th>TargetAchevied2016</th></tr></thead><tbody> <tr><td>1116</td><td>Account1</td><td>West</td><td>DIAMONDBACK</td><td>PHOENIX W</td><td>AZ</td><td>Low</td><td>Aug</td><td>0</td><td>13208.52</td><td>0</td><td>4</td><td>0.7</td><td>1.53</td></tr> <tr><td>1116</td><td>Account1</td><td>West</td><td>DIAMONDBACK</td><td>PHOENIX W</td><td>AZ</td><td>Low</td><td>Oct</td><td>10500.78</td><td>23114.91</td><td>3</td><td>7</td><td>0.84</td><td>1.31</td></tr> <tr><td>2391</td><td>Account2</td><td>West</td><td>MINUTEMEN</td><td>HARTFORD</td><td>CT</td><td>Med</td><td>Jun</td><td>0</td><td>6627</td><td>0</td><td>3</td><td>1.15</td><td>1.29</td></tr> <tr><td>2391</td><td>Account2</td><td>Central</td><td>MINUTEMEN</td><td>HARTFORD</td><td>CT</td><td>Med</td><td>Mar</td><td>19881</td><td>13254</td><td>9</td><td>6</td><td>1.33</td><td>1.17</td></tr> <tr><td>2397</td><td>Account3</td><td>West</td><td>MINUTEMEN</td><td>WORCESTER</td><td>MA</td><td>Med</td><td>Sep</td><td>3684.48</td><td>0</td><td>1</td><td>0</td><td>1.02</td><td>1.53</td></tr> <tr><td>2400</td><td>Account4</td><td>East</td><td>MINUTEMEN</td><td>PORTLAND</td><td>ME</td><td>High</td><td>Jul</td><td>0</td><td>10525.24</td><td>0</td><td>4</td><td>1.03</td><td>1.45</td></tr> <tr><td>2400</td><td>Account4</td><td>East</td><td>MINUTEMEN</td><td>PORTLAND</td><td>ME</td><td>High</td><td>Feb</td><td>2631.31</td><td>42812.62</td><td>1</td><td>17</td><td>1.08</td><td>0.99</td></tr> <tr><td>2404</td><td>Account5</td><td>East</td><td>EMPIRE</td><td>BRIDGEPORT</td><td>CT</td><td>Low</td><td>Mar</td><td>4153.89</td><td>3918.77</td><td>1</td><td>1</td><td>0.79</td><td>1.46</td></tr> <tr><td>2406</td><td>Account6</td><td>Central</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>Med</td><td>Mar</td><td>0</td><td>6951.86</td><td>0</td><td>2</td><td>1.12</td><td>1.02</td></tr> <tr><td>2408</td><td>Account7</td><td>Central</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>High</td><td>Aug</td><td>0</td><td>10994.54</td><td>0</td><td>4</td><td>1.11</td><td>1.54</td></tr> <tr><td>2408</td><td>Account7</td><td>East</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>High</td><td>Feb</td><td>9640.17</td><td>27316.66</td><td>3</td><td>10</td><td>1.06</td><td>1.08</td></tr> <tr><td>2409</td><td>Account8</td><td>West</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>Low</td><td>Mar</td><td>2209</td><td>4418</td><td>1</td><td>2</td><td>0.98</td><td>1.38</td></tr> <tr><td>2415</td><td>Account10</td><td>East</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>Low</td><td>Jul</td><td>0</td><td>2209</td><td>0</td><td>1</td><td>0.71</td><td>0.92</td></tr> <tr><td>2415</td><td>Account10</td><td>East</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>Low</td><td>Mar</td><td>2209</td><td>0</td><td>1</td><td>0</td><td>1.4</td><td>0.97</td></tr> <tr><td>2418</td><td>Account11</td><td>Central</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>Med</td><td>Aug</td><td>0</td><td>6256.68</td><td>0</td><td>2</td><td>1.23</td><td>1.35</td></tr> <tr><td>2418</td><td>Account11</td><td>East</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>Med</td><td>Oct</td><td>0</td><td>24570.26</td><td>0</td><td>8</td><td>1.15</td><td>1.54</td></tr> <tr><td>2422</td><td>Account12</td><td>East</td><td>BIG APPLE</td><td>JERSEY CITY</td><td>NJ</td><td>Low</td><td>Jun</td><td>11522.85</td><td>3475.93</td><td>3</td><td>1</td><td>1.37</td><td>1.14</td></tr> <tr><td>2426</td><td>Account13</td><td>West</td><td>BIG APPLE</td><td>PATERSON</td><td>NJ</td><td>High</td><td>Oct</td><td>0</td><td>3128.34</td><td>0</td><td>1</td><td>1.42</td><td>1.23</td></tr> <tr><td>2426</td><td>Account13</td><td>East</td><td>BIG APPLE</td><td>PATERSON</td><td>NJ</td><td>High</td><td>Apr</td><td>33160.3</td><td>25026.72</td><td>10</td><td>8</td><td>1.4</td><td>1.56</td></tr> <tr><td>2428</td><td>Account14</td><td>West</td><td>BIG APPLE</td><td>PATERSON</td><td>NJ</td><td>High</td><td>Jun</td><td>3222.91</td><td>5717.42</td><td>1</td><td>2</td><td>0.81</td><td>1.49</td></tr> <tr><td>2428</td><td>Account14</td><td>Central</td><td>BIG APPLE</td><td>PATERSON</td><td>NJ</td><td>High</td><td>Nov</td><td>17152.26</td><td>20375.17</td><td>6</td><td>7</td><td>1.04</td><td>1.09</td></tr> <tr><td>2431</td><td>Account15</td><td>East</td><td>BIG APPLE</td><td>PATERSON</td><td>NJ</td><td>Low</td><td>Jun</td><td>0</td><td>9258.3</td><td>0</td><td>3</td><td>1.17</td><td>1.06</td></tr> <tr><td>2431</td><td>Account15</td><td>West</td><td>BIG APPLE</td><td>PATERSON</td><td>NJ</td><td>Low</td><td>May</td><td>16232.6</td><td>12344.4</td><td>5</td><td>4</td><td>1.36</td><td>1.48</td></tr> <tr><td>2434</td><td>Account16</td><td>Central</td><td>BIG APPLE</td><td>PATERSON</td><td>NJ</td><td>Low</td><td>Jun</td><td>2209</td><td>13535.43</td><td>1</td><td>6</td><td>0.81</td><td>1.39</td></tr> </tbody></table>

样本数据

阴谋

我不确定你到底需要什么。 您是否正在寻找一种使用 seaborn 而不是 matplotlib 进行绘图的方法? 这是一个使用seaborn绘制它的解决方案,但它需要首先在pandas中处理数据。

我将数据粘贴到一个excel文件中,您可以按照自己的方式加载数据。

import pandas as pd
import seaborn as sns

file = 'data.xlsx'
df = pd.read_excel(file)

df2 = df.groupby(['Region'],  as_index=False).sum()

df3 = pd.melt(df2,
        id_vars=["Region"],
        value_vars=['Sales2015',
                    'Sales2016'],
        var_name="year",
             
        value_name="total_sales")

fig = sns.barplot(x="Region", y="total_sales", hue = "year", data=df3)

绘图结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM