matplotlib——直方图,箱线图的绘制

1.直方图的绘制——hish()绘制

import matplotlib.pyplot as plt

import numpy as np

import math

#### 创建画布

plt.figure(figsize=(20,8))

###创建数据

age = [10,20,30,44,23,32,55,11,8,9,17,19,20,33,30,30,40,44,55,55,21,66,64,61,60,66,73,84,73,83,88]

###指定分组情况-----默认系统自动进行分组

# bins = 6

##### 自定义分组

###找到最大值,最小值相减,得出极差

max = np.max(age)
min = np.min(age)

##极差
ptp = max-min

##指定组距----10为一组
bins = math.ceil(ptp/5)
arr = np.arange(min,(5*bins)+6,5)

print(arr)

###绘图
plt.hist(age,bins=bins,color='g')
plt.title('年龄直方图')
##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'
##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False
##x轴刻度
plt.xticks(arr)

###保存
plt.savefig('./直方图.png')

##展示
plt.show()

2.箱线图——boxplot()函数绘图

boxplot函数

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None,
widths=None, patch_artist=None,meanline=None, labels=None, … )

常用参数

参数名称 说明 参数名称 说明
x 接收array。表示用于绘制箱线图的数
据。无默认。
positions 接收array。表示图形位置。默认为
None。
notch 接收boolean。表示中间箱体是否有缺
口。默认为None。
widths 接收scalar或者array。表示每个箱体
的宽度。默认为None。
sym 接收特定sting。指定异常点形状。默
认为None。
labels 接收array。指定每一个箱线图的标
签。默认为None。
vert 接收boolean。表示图形是横向纵向或
者横向。默认为None。
meanline 接收boolean。表示是否显示均值线。
默认为False。
import matplotlib.pyplot as plt

import numpy as np

data = np.load('./国民经济核算季度数据.npz')
for tmp in data:
    print(tmp)

columns = data["columns"]
values = data["values"]
print(columns)
print(values)


##创建画布
fig = plt.figure(figsize=(10,5))

##默认不支持中文,想用中文,必须进行设置RC参数
plt.rcParams['font.sans-serif'] = 'SimHei'

##默认不支持负号,想用负号,进行RC参数设置
plt.rcParams['axes.unicode_minus'] = False

###第一个子画布
fig.add_subplot(2,1,1)

x = values[:,3:6]
label = ["第一产业", "第二产业", "第三产业"]


##notch----缺口
##meanline----中线

plt.boxplot(x,notch=False,showmeans=True,meanline=True,labels=label)

plt.xlabel('产业')

plt.ylabel('各产业生产总值(亿元)')

plt.title('2000-2017年各产业生产总值箱线图')


##第二个子画布
fig.add_subplot(2,1,2)
x = values[:,6::]

label = ["农林业", "工业", "建筑业", "批发业", "交通业", "餐饮业", "金融业", "房地产业", "其他"]
plt.boxplot(x,notch=False,meanline=True,labels=label)

plt.xlabel('行业')

plt.ylabel('各行业生产总值(亿元)')

plt.title('2000-2017年各行业生产总值箱线图')


plt.show()

猜你喜欢

转载自blog.csdn.net/weixin_43567965/article/details/92798243