直方图设置坐标_Python MatplotlibExcel数据的绘图(二)之直方图、条形图、饼图、散点图、极坐标图...

       上一章介绍了Matplotlib绘图一些通用的设置,以折线图为例,本章我们就介绍一下其他的图形,直方图、条形图、饼图、散点图、极坐标图的原理和用法。

一、直方图

       直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵向表示分布情况。

       直方图是数值分布的精确图形表示,这是一个连续变量的概率分布的估计。为了构建直方图,第一步是将值得范围分段,即将整个值得范围分为一系列间隔,然后计算每个间隔中有多少值。间隔必须相邻,且通常是相等的大小。

【直方图的参数只有一个x!不想条形图需要传入x, y】

     hist ( )

  • bins : 可以是一个bins数量的整数值,也可以是表示bin的一个序列。默认是10

  • normed : 如果是True,直方图的图作归一化处理,形成概率密度,默认为FALSE

  • color : 指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色。

  • orientation : 通过设置为horizontal创建水平直方图。默认值为vertical

# 首先导入我们需要的数据,通常会先进行数据处理import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_excel(r'C:\Users\56331\Desktop\test.xlsx', sheet_name='Sheet1')df

24e95fa4215ce2571410ea7227fdbf84.png

对上半年的各款项进行一个直方图的绘制

# 选取上半年的数据df1 = df['上半年']# bins是我想将数据分为10份,range是横轴的坐标范围,color是颜色plt.hist(df1, bins = 10, range = (1000, 2000), color = 'blue')

8520a9d2ab6c98dd9680be2c1c6e9991.png

如结果所示,两个array数组,第一个表示数量,第二个表示范围,即1000-1100之间有8个,1100-1200之间有11个,一次类推。。。

如果想显示数值,hist函数中没有封装响应的参数,需要手动进行添加,使用plt.text函数

df1 = df['上半年']arr = plt.hist(df1, bins = 10, range = (1000, 2000), color = 'blue')# 将每一个数值添加到响应的直方图上方for i in range(10):    plt.text(arr[1][i]+20,arr[0][i]+0.2,str(arr[0][i]))

a54c5567238a12996dbe936454c7c1ed.png

二、条形图

       条形图的原理不用多说,大家都知道,介绍一下用法,使用bar函数。

import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_excel(r'C:\Users\56331\Desktop\test.xlsx', sheet_name='Sheet2')df

9d4be391b8bf9975a26cc0e732824c58.png

# 绘制条形图的大小,宽度和颜色plt.figure(figsize = (10,6))x = df['月份']y = df['2019年']plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' # 设置微软雅黑字体plt.bar(x,y,width = 0.6,color = 'red')

600bc8854183ded2832a377240498cd4.png

如果想绘制水平的条形图,使用barh函数

plt.figure(figsize = (10,6))x = df['月份']y = df['2019年']plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' # 设置微软雅黑字体plt.barh(x,y,0.7,color = 'red')

21ec3538a8cf5bc64b74db6fcb222f3a.png

如果每个条形都想显示不一样的颜色,那么可以对color进行设置

import numpy as np# 随机生成12个数组构成12种不同额颜色plt.bar(x,y,width = 0.7,color = np.random.rand(12,3))

61d59f300cfbf115e222e0085552dfd4.png

如果想加上标签,就想上面的直方图那样

plt.bar(x,y,width = 0.7,color = np.random.rand(12,3))for a,b in zip(x,y):    plt.text(a, b+20, b, ha='center')

ff348593dd12e4e9942d57be94341dac.png

三、饼图

       饼图的原理也不用多说,下面介绍其用法

首先将A、B、C三个公司上半年的数据进行汇聚,算出上半年和下半年的业绩总和

import pandas as pdimport matplotlib.pyplot as pltdf = pd.read_excel(r'C:\Users\56331\Desktop\test.xlsx', sheet_name='Sheet1')df2 = df.groupby(['公司名称'])['上半年','下半年'].sum()df3 = df2.reset_index()df3

6d9d375000ec74b65e3c14159707d082.png

使用上半年的数据制作饼图,并设置常用的参数

plt.figure(figsize = (6,6))# autopct是百分比的格式,explode是只是哪一块分离,shadow是是否显示阴影,# startangle是其实角度,pctdistance和labeldistance是百分比和标签离圆心的举例plt.pie(df3['上半年'], labels = df3['公司名称'], autopct='%0.2f%%',colors=['red','blue','yellow'],        explode=[0,0,0.1], shadow=True, startangle=90, pctdistance=0.5, labeldistance=1.2)# 由于没有调节字体大小的参数,所以设置全局参数大小plt.rcParams['font.size'] = 15  # 横纵相等,为圆形plt.axis('equal')plt.show()

10a6bb665580f432feedb31062b6fe3f.png

四、散点图

       散点图的原理也很简单,查看数据分布情况,使用scatter函数。

import numpy as npimport matplotlib.pyplot as pltplt.scatter(np.random.randn(1000), np.random.randn(1000),color = np.random.rand(1000,3),marker = 'd')

8cfe68a1f3bbdc016d99b8d95141d91c.png

五、极坐标图

       极坐标图可以通过条形图和散点图变化而来,只需要设置为polar就可以了

1、绘制极坐标柱状图

import numpy as npimport matplotlib.pyplot as pltplt.figure(figsize=(9,6))x = np.linspace(0,2*np.pi,8)y = np.random.randint(0,1000,8)plt.bar(x, y, color = np.random.rand(8,3))

e22c684e7a5a601124d3e79dc3d10fc1.png

import numpy as npimport matplotlib.pyplot as pltplt.figure(figsize=(9,9))plt.axes(polar=True)plt.bar(x, y, color = np.random.rand(8,3))

b189f2947c68c93feca458b20555780e.png

2、绘制极坐标散点图

import numpy as npimport matplotlib.pyplot as pltplt.figure(figsize=(9,9))r = 2*np.random.rand(100)x = 2*np.pi*np.random.rand(100)plt.axes(polar=True)plt.scatter(x, r, color = np.random.rand(100,3), s = 150*r*2, cmap = 'cool', alpha = 0.8)

c045cd2ed60fe84e276b5133f0f12e12.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值