绘制柱状图主要使用matplotlib的bar函数。相比于pandas,matplotlib绘制起来较复杂,需要传入刻度列表和高度列表。
实例:绘制简单的柱状图
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data=[20,80,70,40,100]
plt.bar([1,2,3,4,5],data)
实例接上
最后一行代码修改为:
plt.bar([1,2,3,4,5],data,color='pink')
运行结果如下:
填充为紫色
plt.bar([1,2,3,4,5],data,color='purple')
使用alpha参数设置透明度
实例同上。
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data=[20,80,70,40,100]
plt.bar([1,2,3,4,5],data,color='purple',alpha=0.1)
使用grid函数可以绘制格网,通过对其参数设置已达到个性化效果。
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data=[20,80,70,40,100]
plt.bar([1,2,3,4,5],data,color='purple',alpha=0.5)
plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='y',alpha=0.6)
从上面的实例可以看出没有设置柱状图宽度时默认很宽,不太好看。使用width参数设置宽度。
实例:
import pandas as pd
import numpy as up
import matplotlib.pyplot as plt
%matplotlib inline
data1=[20,80,70,40,100]
data2=[30,50,50,80,90]
width=0.2
plt.bar(np.arange(len(data1)),data1,width=width)
plt.bar(np.arange(len(data2))+width,data2,width=width)
import pandas as pd
import numpy as up
import matplotlib.pyplot as plt
%matplotlib inline
data1=[20,80,70,40,100]
data2=[30,50,50,80,90]
data3=[40,30,70,40,20]
width=0.2
plt.bar(np.arange(len(data1))-width,data1,width=width)
plt.bar(np.arange(len(data2)),data2,width=width)
plt.bar(np.arange(len(data3))+width,data3,width=width)
类似于垂直柱状图。
只需把bar换成barh就可以了。
实例:
import pandas as pd
import numpy as up
import matplotlib.pyplot as plt
%matplotlib inline
data1=[20,80,70,40,100]
data2=[30,50,50,80,90]
data3=[40,30,70,40,20]
height=0.2
plt.barh(np.arange(len(data1))-height,data1,height=height)
plt.barh(np.arange(len(data2)),data2,height=height)
plt.barh(np.arange(len(data3))+height,data3,height=height)
由上面的实例可以看出并没有设置刻度和标签,但是实际中为了让图更加直观,是要设置刻度以及标签的。
在matplotlib中可以使用xticks函数设置x轴的刻度及标签。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
font={
'family':'kaiti',
'weight':'bold',
}
matplotlib.rc('font',**font)
labels=['数学','英语','语文','物理','历史']
data=[20,80,70,40,100]
plt.xticks(range(len(data)),labels)
plt.bar(range(len(data)),data)
运行结果:
也可以使用yticks函数设置y轴刻度标签。
通过xlabel ,ylabel方法可以给x,y轴设置标签。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
font={
'family':'kaiti',
'weight':'bold',
}
matplotlib.rc('font',**font)
labels=['数学','英语','语文','物理','历史']
data=[20,80,70,40,100]
plt.xticks(range(len(data)),labels)
plt.xlabel('学科')#x轴标签
plt.ylabel('分数')#y轴标签
plt.title('成绩')#标题
plt.bar(range(len(data)),data)
import pandas as pd
import numpy as up
import matplotlib.pyplot as plt
%matplotlib inline
data1=[20,80,70,40,100]
data2=[30,50,50,80,90]
data3=[40,30,70,40,20]
width=0.2
plt.bar(np.arange(len(data1))-width,data1,width=width,label='语文')
plt.bar(np.arange(len(data2)),data2,width=width,label='数学')
plt.bar(np.arange(len(data3))+width,data3,width=width,label='英语')
plt.legend()