Ril*_*n42 11 python matplotlib bar-chart python-3.x pandas
这里的目标是创建一个分组的条形图,而不是如下图所示的子图
有没有一种简单的方法在Python中创建分组条形图?现在我得到了单独的条形图,而不是一个图上的单独条形图.
df = pd.DataFrame([['g1','c1',10],['g1','c2',12],['g1','c3',13],['g2','c1',8],['g2','c2',10],['g2','c3',12]],columns=['group','column','val'])
%matplotlib inline
df.groupby(['group']).plot(kind='bar')
Run Code Online (Sandbox Code Playgroud)
Imp*_*est 18
Pandas将按列显示分组条形图.每行但不同列的条目将在结果图中构成一个组.因此,您需要"重塑"您的数据框以将"组"作为列.在这种情况下,您可以像
df.pivot("column", "group", "val")
Run Code Online (Sandbox Code Playgroud)
生产
group g1 g2
column
c1 10 8
c2 12 10
c3 13 12
Run Code Online (Sandbox Code Playgroud)
绘制此图将产生分组条形图.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame([['g1','c1',10],['g1','c2',12],['g1','c3',13],['g2','c1',8],
['g2','c2',10],['g2','c3',12]],columns=['group','column','val'])
df.pivot("column", "group", "val").plot(kind='bar')
plt.show()
Run Code Online (Sandbox Code Playgroud)
Tre*_*ney 12
seaborn.barplot与hue参数一起使用。seaborn是一个高级 APImatplotlibseaborn 0.11.1与matplotlib 3.4.2import pandas as pd
import seaborn as sns
# the sample dataframe from the OP
df = pd.DataFrame([['g1', 'c1', 10], ['g1', 'c2', 12], ['g1', 'c3', 13], ['g2', 'c1', 8], ['g2', 'c2', 10], ['g2', 'c3', 12]], columns=['group', 'column', 'val'])
# plot with seaborn barplot
sns.barplot(data=df, x='column', y='val', hue='group')
Run Code Online (Sandbox Code Playgroud)
您可以使用下面给出的代码简单地执行此操作:
import pandas as pd
import matplotlib.pyplot as plt
positive_values = [20, 17.5, 40]
negative_values = [15, 8, 70]
index = ['Precision', 'Recall', 'f1-score',]
df = pd.DataFrame({'Positive Values': positive_values,
'Negative Values': negative_values}, index=index)
ax = df.plot.bar(rot=0, color={"Positive Values": "green", "Negative Values": "red"})
Run Code Online (Sandbox Code Playgroud)
输出:
| 归档时间: |
|
| 查看次数: |
12461 次 |
| 最近记录: |