[英]How to create a grouped bar plot from lists
import numpy
import matplotlib.pyplot as plt
names = ["a","b","c","d"]
case1 = [5,7,5,6]
case2 = [7,4,8,5]
plt.hist(case1)
plt.show()
pandas.DataFrame.plot
pandas.DataFrame.plot
,然后用pandas.DataFrame.plot
'names'
in this case, is automatically used for the xaxis and the columns are plotted as bars.'names'
自动用于 xaxis,并且将列绘制为条形图。matplotlib
is used as the plotting backend matplotlib
用作绘图后端python 3.8
, pandas 1.3.1
and matplotlib 3.4.2
python 3.8
、 pandas 1.3.1
和matplotlib 3.4.2
import pandas as pd
import matplotlib.pyplot as plt
names = ["a","b","c","d"]
case1 = [5,7,5,6]
case2 = [7,4,8,5]
# create the dataframe
df = pd.DataFrame({'c1': case1, 'c2': case2}, index=names)
# display(df)
c1 c2
a 5 7
b 7 4
c 5 8
d 6 5
# plot
ax = df.plot(kind='bar', figsize=(6, 4), rot=0, title='Case Comparison', ylabel='Values')
plt.show()
python 2.7
python 2.7
尝试以下操作fig, ax = plt.subplots(figsize=(6, 4))
df.plot.bar(ax=ax, rot=0)
ax.set(ylabel='Values')
plt.show()
It can be achieved by adapting this code to your problem.可以通过使此代码适应您的问题来实现。
# importing pandas library
import pandas as pd
# import matplotlib library
import matplotlib.pyplot as plt
# creating dataframe
df = pd.DataFrame({
'Names': ["a","b","c","d"],
'Case1': [5,7,5,6],
'Case2': [7,4,8,5]
})
# plotting graph
df.plot(x="Names", y=["Case1", "Case2"], kind="bar")
Matplotlib only (plus numpy.arange
).仅 Matplotlib(加上
numpy.arange
)。
It's easy to place correctly the bar groups if you think about it.如果您考虑一下,很容易正确放置酒吧组。
import matplotlib.pyplot as plt
from numpy import arange
places = ["Nujiang Lisu","Chuxiong Yi","Liangshan Yi","Dehong Dai & Jingpo"]
animals = ['Pandas', 'Snow Leopards']
n_places = len(places)
n_animals = len(animals)
animals_in_place = [[5,7,5,6],[7,4,8,5]]
### prepare for grouping the bars
total_width = 0.5 # 0 ≤ total_width ≤ 1
d = 0.1 # gap between bars, as a fraction of the bar width, 0 ≤ d ≤ ∞
width = total_width/(n_animals+(n_animals-1)*d)
offset = -total_width/2
### plot
x = arange(n_places)
fig, ax = plt.subplots()
for animal, data in zip(animals, animals_in_place):
ax.bar(x+offset, data, width, align='edge', label=animal)
offset += (1+d)*width
ax.set_xticks(x) ; ax.set_xticklabels(places)
fig.legend()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.