R4.Matplotlib_绘制直方图和柱状图

Part_1:直方图 hsit()

函数格式:matplotlib.pyplot.hist(x,bins=None,range=None,density=None,weights=None,
cumulatve=False,bottom=None,histtype=‘bar’,align=‘mid’,orientation=‘vertical’,
rwidth=None,log=False,color=None,label=None,stacked=False,density = False,hold=None,data=None,**kwargs)

参数说明:
kwargs:为字典属性名称/值对
x:接收array。表示x轴的数据,无默认
bins:接收int、序列或auto。表示直方图的长条形数目,可选项。默认为10
range:接收tuple。表示箱子的下部和上部范围,忽略较低和较高的异常值。 如果未提供,则范围为(x.min(),x.max())可选,默认为None
histtype:取值为bar、barstacked、step、stepilled,可选,默认为bar,表示为要绘制的直方图类型。其中,bar是传统的条形直方图,如果给出多个数据,则条形直方图并排排列;barstacked是将多个数据堆叠在一起的条形直方图;
step生成一个默认未填充的线图;
stepfilled生成一个默认填充的线图
align:取值为left、mid、right、可选,默认为mid,用于控制直方图的绘图方式。left表示直方图位于左边框边缘的中心mid表示直方图在bin边缘之间居中;right表示直方图位于右边框的中心
rwidth:接收标量或无,可选,默认值为None表示条形的相对宽度作为箱宽的一部分。如果为none,则自动计算宽度;如果histtype是“step”或者“stepfilled”,则忽略color:接收特定的string或者包含颜色的字符串的array,表示直方图的颜色,默认值为none
edgecolor:接收特定的string或者包含颜色的字符串的array,表示长条形边框的颜色
alpha:接收0~1的小数。表示长条形的透明度,默认为none
density:布尔值,默认值:False.如果 True, 绘制并返回一个概率密度:每个 bin 将显示 bin 的原始计数除以总数 计数 和 bin 宽度( density = counts / (sum(counts) * np.diff(bins))), 使直方图下的面积积分为 1(np.sum(density * np.diff(bins)) == 1)。如果 堆叠 也是 True,直方图的总和是 归一化为 1。

1.1示例:

绘制一个正态分布数据的直方图

import matplotlib.pyplot as plt
import matplotlib
import numpy as np
#设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']
matplotlib.rcParams['axes.unicode_minus']=False
#随机生成10000个满足正态分布的数据
data=np.random.randn(10000)
plt.hist(data,bins=40,density=False,color='red',edgecolor="black",rwidth=0.7,alpha=0.7)
#显示横标签
plt.xlabel('区间')
#显示纵轴标签
plt.ylabel("频数/频率")
#显示图标题
plt.title("频数/频率分布直方图")
plt.show()

png

Part_2:柱状图 bar()

pyplot中绘制柱状图的函数为bar

格式:
matplotlib.pyplot,bar(x,height,*align=‘center’,**kwargs)
matplotlib.pyplot,bar(x,height,width,align=‘center’,**kwargs)
matplotlib.pyplot,bar(x,height,width,bottom
align=‘center’,**kwargs)

参数说明:
x:接收array。表示x轴的数据,无默认
height:接收array。表示x轴所代表数据的数量,无默认
width:接收0~1的float,指定柱状图的宽度,默认为0.8
align:取值为center或edge,可选,默认为center,表示柱状图对齐x坐标
color:接收特定的string或者包含颜色的字符串的array,表示柱状图的色,默认值为none
edgecolor:接收特定的string或者包含颜色的字符串的array,表示柱状图的颜色

2.1示例:

使用不同颜色、不同形状的点,绘制2007——2016年全国就业人员、城镇就业人员和乡村就业人员的柱状图。其中全国就业人员(万人)用红色的柱状表示,城镇就业人员(万人)用绿色柱状来表示,乡村就业人员(万人)用蓝色柱状来表示

import numpy as np
import matplotlib.pyplot as plt
#导入数据
data=np.loadtxt('P:/data/Employedpopulation.csv',delimiter=',',
                usecols=(1,2,3,4,5,6,7,8,9,10),dtype=int)
#设置matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#创建绘图对象,并设置对象的高度和宽度
plt.figure(figsize=(6,4))
#绘制全部就业人员折线图
plt.bar(data[0],data[1],width=0.35,color="red",edgecolor="white")
#绘制城镇就业人员折线图
plt.bar(data[0]+0.35,data[2],width=0.35,color="green",edgecolor="white")
#绘制农村就业人员折线图
plt.bar(data[0]+0.7,data[3],width=0.35,color="b",edgecolor="white")
#添加标签
plt.xlabel('年份')
plt.ylabel('人员(万人)')
plt.ylim((30000,80000))
plt.xlim(2006,2019)
plt.title('2007-2016年城镇、乡村、全部就业人员情况柱状图')
#给绘图添加text
X=data[0];Y1=data[1]
for x,y in zip(X,Y1):
    plt.text(x+0.3,y+0.05,"%i" % y,ha='center')
Y2=data[2]
for x,y in zip(X,Y2):
    plt.text(x+0.6,y+0.05,'%i' % y,ha="center")
Y3=data[3]
for x,y in zip(X,Y3):
    plt.text(x+0.9,y+0.05,'%i' % y,ha="center")

#添加图例
plt.legend({"全部就业",'城镇就业','乡村就业'})
plt.savefig('P:/data/Employedpopulation_bar.png')
plt.show()


png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TryBest_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值