堆叠柱状图

bar(left, height, width=0.8, bottom=None, **kwargs)

  • left为x轴的位置序列,一般采用arange函数产生一个序列;
  • height为y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据;

  • width为柱形图的宽度,一般这是为1即可;color为柱形图填充的颜色;

  • align设置plt.xticks()函数中的标签的位置;
  • yerr让柱形图的顶端空出一部分。
  • color设置柱状的颜色
  • alpha 设置柱状填充颜色的透明度 大于0 小于等于1
  • linewidth 线条的宽度
  • bottom bottom决定了柱子距离x轴的高度,默认为None,即表示与x轴距离为0

基本用法

import pandas as pd
import matplotlib.pyplot as plt

#读取数据
datafile = u'matplotlib.xlsx'
data = pd.read_excel(datafile)

plt.figure(figsize=(10,5))#设置画布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小
plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小
plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小

#alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例;
plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = 0.8,  facecolor = 'deeppink', edgecolor = 'darkblue', lw=1, label='Jay income')

plt.legend(loc=2)#图例展示位置,数字代表第几象限
plt.show()#显示图像

undefined

多个直方图并列显示

通过bar() 中的 width 参数来调节

绘制并列柱状图与堆叠柱状图类似,都是绘制多组柱体,只需要控制好每组柱体的位置和大小即可。

size=5
x=np.arange(size)
a=np.random.random(size)
b=np.random.random(size)
c=np.random.random(size)

total_width,n=0.8,3
width=total_width/n
x=x-(total_width-width)/2

plt.bar(x,a,width=width,label='a')
plt.bar(x+width,b,width=width,label='b')
plt.bar(x+2*width,c,width=width,label='c')

plt.legend()
plt.show()

undefined

width_val = 0.4 
#若显示 n 个柱状图,则width_val的值需小于1/n ,否则柱形图会有重合

#alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例;

plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = width_val,  
        facecolor = 'deeppink', edgecolor = 'deeppink', lw=1, label='Jay income')

plt.bar(data['时间']+width_val,data['收入_JJ'], alpha=0.6,width = width_val, 
        facecolor = 'darkblue', edgecolor = 'darkblue', lw=1, label='JJ income')

undefined

显示直方图上的数值

import pandas as pd
import matplotlib.pyplot as plt

#读取数据
datafile = u'matplotlib.xlsx'
data = pd.read_excel(datafile)

plt.figure(figsize=(10,5))#设置画布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小
plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小
plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小


width_val = 0.4 #若显示 n 个柱状图,则width_val的值需小于1/n ,否则柱形图会有重合


#alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例;

rects_Jay = plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = width_val, 
                    facecolor = 'deeppink', label='Jay income')

rects_JJ = plt.bar(data['时间']+width_val,data['收入_JJ'], alpha=0.6,width = width_val,
                   facecolor = 'darkblue',label='JJ income')

# 添加数据标签 就是矩形上面的数值
def add_labels(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width()/2, height, height, ha='center',
                 va='bottom')
        rect.set_edgecolor('white')

add_labels(rects_Jay)
add_labels(rects_JJ)

plt.legend(loc=2)#图例展示位置,数字代表第几象限
plt.show()#显示图像

undefined

直方图堆叠显示

通过bar() 中的 bottom 参数来调节

import pandas as pd
import matplotlib.pyplot as plt

#读取数据
datafile = u'matplotlib.xlsx'
data = pd.read_excel(datafile)

plt.figure(figsize=(10,5))#设置画布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小
plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小
plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小


width_val = 0.4

#通过bottom使得两个柱状图堆叠显示,且没有交叉
#alpha:透明度;width:柱子的宽度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例;
plt.bar(data['时间'],data['收入_Jay'], alpha=0.6,width = width_val,  
        facecolor = 'deeppink', edgecolor = 'deeppink', 
        lw=1, label='Jay income'
       )

plt.bar(data['时间'],data['收入_JJ'], bottom=data['收入_Jay'], alpha=0.6,
        width = width_val,  facecolor = 'darkblue', 
        edgecolor = 'darkblue', lw=1, label='JJ income'
       )

plt.legend(loc=2)#图例展示位置,数字代表第几象限
plt.show()#显示图像

undefined

水平直方图

通过 barh() 函数实现,与 bar() 函数的主要区别是:在 bar() 函数中,width 这一参数代表的是柱子的宽度(胖瘦),而在 barh() 函数中 width 这一参数代表的是横向柱子的长度(长短),在下面代码中,width = data[‘收入_Jay’]。

Matplotlib 中绘制水平柱状图(直方图、条形图)的函数为 barh() ,使用语法如下: matplotlib.pyplot.barh(y, width, height=0.8, left=None, *, align=‘center’, **kwargs)

import pandas as pd
import matplotlib.pyplot as plt

#读取数据
datafile = u'matplotlib.xlsx'
data = pd.read_excel(datafile)

plt.figure(figsize=(10,5))#设置画布的尺寸
plt.title('Examples of Histogram',fontsize=20)#标题,并设定字号大小
plt.xlabel(u'x-year',fontsize=14)#设置x轴,并设定字号大小
plt.ylabel(u'y-income',fontsize=14)#设置y轴,并设定字号大小

#alpha:透明度;facecolor:柱子填充色;edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;label:图例;
plt.barh(data['时间'],data['收入_Jay'], alpha=0.6, facecolor = 'deeppink', edgecolor = 'deeppink', label='Jay income')

plt.legend(loc=4)#图例展示位置,数字代表第几象限
plt.show()#显示图像

undefined

import matplotlib.pyplot as plt
import numpy as np

n = 12
X = np.arange(n)
Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)

plt.bar(X, +Y1)
plt.bar(X, -Y2)

plt.xlim(-.5, n)

plt.ylim(-1.25, 1.25)
#隐藏坐标轴刻度数字
plt.xticks(())
plt.yticks(())
#移动坐标轴
# ax=plt.gca()
# ax.spines['bottom'].set_position(('data',0))

plt.show()

undefined

设置柱体样式

颜色

通过facecolor(或fc)关键字参数可以设置柱体颜色

plt.bar(range(len(data)), data, fc='g')

通过 color 关键字参数 可以一次性设置多个颜色

plt.bar(range(len(data)), data, color='rgb') # or `color=['r', 'g', 'b']`

设置tick label

设置x轴刻度(tick_label)用labels = [‘Tom’, ‘Dick’, ‘Harry’, ‘Slim’, ‘Jim’]显示

import matplotlib.pyplot as plt

data = [5, 20, 15, 25, 10]
labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim']

plt.bar(range(len(data)), data, tick_label=labels)
plt.show()
Update time: 2020-05-23

results matching ""

    No results matching ""