Python水平浮动堆积条

时间:2018-06-03 05:11:25

标签: python python-3.x data-visualization

我想知道如何在Python中生成如下图表。 enter image description here

哪个库是最好用的? Seaborn?熊猫?任何人都可以指出一些可以生成图表的示例代码。

2 个答案:

答案 0 :(得分:1)

你可以将seaborn用于那种情节。

以下来自Here的示例代码将描绘您的要求

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

# Initialize the matplotlib figure
f, ax = plt.subplots(figsize=(6, 15))

# Load the example car crash dataset
crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)

# Plot the total crashes
sns.set_color_codes("pastel")
sns.barplot(x="total", y="abbrev", data=crashes,
            label="Total", color="b")

# Plot the crashes where alcohol was involved
sns.set_color_codes("muted")
sns.barplot(x="alcohol", y="abbrev", data=crashes,
            label="Alcohol-involved", color="b")

# Add a legend and informative axis label
ax.legend(ncol=2, loc="lower right", frameon=True)
ax.set(xlim=(0, 24), ylabel="",
       xlabel="Automobile collisions per billion miles")
sns.despine(left=True, bottom=True)
plt.show()

如果您正在寻找不同的颜色,只需更改colormap

即可

答案 1 :(得分:0)

这是一些伪代码,但你可以在pandas中实现这一点。我不打算为你写一个完整的程序,但是你提到的基本例子就足够了。

import pandas as pd
import numpy as np 
import matplotlib.pyplot as plt

a = np.arange(1, 8)

data_frame = pd.DataFrame([[1, 2, 3, 4, 5, 6, 7]], columns=['A', 'B', 'C', 'D', 'E', 'F', 'G'])


data_frame.plot(kind='barh')



plt.show()

此代码将创建一个水平条形图,就像您上面显示的那样。如果您希望它与上面的堆栈完全相同,则可以在.plot()方法中添加'stacked = True'参数。为了使条形图水平,我们在参数中传递kind ='barh'。图表中会自动显示一个图例,突出显示每个条形图的含义。您可以操纵各种条形图的颜色。这是一个简单的例子,你将不得不对熊猫做更多的研究,但你基本上可以用pandas和matplotlib.pyplot创建很好的视觉效果。

这是输出: enter image description here

同样,如果要获取列的特定名称,可以向DataFrame中的值添加标题,如果您有支持堆积条的数据,只需将堆叠的kwarg设置为True即可创建堆积条形图对于各种类别。