02 matplotlib - 柱状图、直方图、散点图 、饼图

=== 头文件 ===

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 解决中文显示问题
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# inline 在行内显示
%matplotlib inline 

=== 柱状图 ===

1、创建数据
2、设置坐标轴中文参数,代替数字 plt.xticks(num,stu)
3、设置每组柱状图的个数(有几个轴)
4、设置刻度 plt.ylim(0,100) 0~100分 plt.xlim(0,7) 6个学生
5、绘制柱状图 plt.bar 颜色、对其方式align、位置调整num-2*w
# x轴: 学生信息
stu=np.array(["张三","李四","王五","赵六","钱七","周八"])
num = np.arange(1,7) #学号
# x轴刻度: 注释掉为学号,放开为姓名
plt.xticks(num,stu)

# y轴: 两门成绩
score_chinese=np.random.randint(0,100,6)
score_maths=np.random.randint(0,100,6)
score_english=np.random.randint(0,100,6)
# 每组数据多少个轴(语文、数学两个轴)
#n=2
n=3
w=0.8/n

# 设置y轴刻度
plt.ylim(0,100)
plt.xlim(0,7)


# 图像对齐方式align: 居中center 左对齐edge


# 双数个轴用 edge
#plt.bar(num-w,score_chinese,label='语文',color='green',width=w,align='edge')
#plt.bar(num,score_maths,label='数学',color='blue',width=w,align='edge')
# plt.bar(num+w,score_english,label='英语',color='red',width=w,align='center')

# 单数个轴用center
plt.bar(num,score_chinese,label='语文',color='green',width=w,align='center')
plt.bar(num-w,score_maths,label='数学',color='blue',width=w,align='center')
plt.bar(num+w,score_english,label='英语',color='red',width=w,align='center')

plt.legend(loc='upper left')
偶数个轴
奇数个轴
scores = pd.read_csv('../Pandas_module/student_info1.csv',header=1,names=['Chinese','Math','English'])
scores = scores.fillna(0)
scores
plt.bar(scores.index.values,scores['Chinese'])

=== 直方图 ===

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

# 随机生成一组正态分布的数据
x=np.random.randn(1000)

# 用直方图表示这组数据
# plt(x,bins,weight)
# x: 数据
# bins: 多少个条状图
# weights: x的数据,对每一组的贡献(倍数) #得和我们的数据大小相同 #加上weight后,x的数据会乘以10体现在y轴刻度上
# bottom: 底部从多少开始,y轴刻度最低为10
# orientation= 'horizontal' 横向显示
w=np.random.randint(10,11,1000)
plt.hist(x,50,weights=w,bottom=100)
plt.show()

=== 散点图 ===

# 散点图 scatter
# x身高 y体重
x=np.array([150,151,154,156,185,185,176,175,178,178,190,198,174])
y=np.array([45,45,46,47,70,76,65,64,67,65,68,67,87])

# 看哪个分布段的身高和体重最多
plt.scatter(x,y)
plt.show()

=== 饼图 ===

# plt.pie()
month=['1月','2月','3月']
counts=[1300,1600,5000]
# 以逆时针来绘制
# startangle 开始绘制的角度
# explode 把饼取出来一点
# shadow 阴影
# autopct="%.1f%%" 显示百分比
# radius=0.8大小缩小到80%

explodes=[0.2,0,0]
plt.pie(counts,labels=month,startangle=90,explode=explodes
        ,shadow=True,autopct="%.1f%%",radius=0.8)
plt.show()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容