1.常用图的绘制
1. 折线图
在之前的博客中详细解释过。地址:
https://blog.csdn.net/cai_niao_lu/article/details/121886458
2. 散点图
1. API:
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None)
x:数据点对应的x轴上的数值
y:数据点对应的y轴上的数值
s:对应的是size,即散点图中点的大小
c:color,即点的数值,传入的是一个数组或者是一个值,当传入的是数组的时候,说明存在分级的时候可以使用camp或者norm进行颜色分类。
camp:色谱,当c中传入数值的时候,进行分类颜色
norm:也相当于色谱,可以进行颜色分类
2. 适用范围:用于寻找两个变量之间的关系时候利用。或者分类结果通过散点图表示。
3. 柱状图
1. API:
plt.bar(x, height, width=0.8, align='center', color=)
x:对应的是x轴上的分级
height:对应的是x分级的高度
width:柱状图的宽度
align:取值center(x对应在柱状图的中间位置)或者edge(x对应在柱状图的左边位置。
color:传入一个列表
2. 适用范围:用来比较,反应的比较直观。
4. 直方图
1. API:
plt.hist(x, bins=None, density=False, color=None, label=None)
x:数据值
bins:分级的方式,可以传入数组或者传入数值,当传入数值时,其为分组的组数;当传入是数组时,其为真正的分组方式。例如[1, 2, 3, 4] 则分级方式为[1, 2),[2, 3),[3, 4]。注意最后一个是闭合的。
density:如果传入True,则输出的y轴上是所占有的比例。
color:直方图的颜色
label:直方图的名称
2. 适用范围:用来查看数据的分布情况。
3. 与柱状图不同的是:
1. 两个直方图之间不存在间隙
2. 直方图的x轴上的顺序不能变化,而柱状图可以
3. 适用的范围不同,主要是用来查看数据的分布规律
5. 饼图
1. API:
plt.pie(x, labels=None, colors=None, autopct=None, shadow=False, radius=1)
x:传入数值
labels:饼图每一部分的名称
colors:传入的是一个数组,用来颜色分级
autopct:格式化显示的内容,一般传入'%1.2f%%',含义是保留两位小数
shadow:如果传入True,那么饼图下方出现阴影。用来美化。
radius:饼状图的半径大小
2. 适用范围:
当类别少于9个的时候,才适用,如果超过9个,那么采用柱状图进行显示。
3. 饼图画出不圆的解决方法:
plt.axis('equal')
2.以上就是我们数据分析中经常用到的图像了,可以添加的具体细节,在上一篇博客中已经清楚的分析过了。地址:https://blog.csdn.net/cai_niao_lu/article/details/121886458。具体细节如下:
1.网格绘制
2.x、y轴的名称设置
3.x、y轴的刻度设置
4.图标题的设置
5.多个图的绘制(面向对象的绘图过程)
3.注意:matplotlib的颜色是支持16进制颜色的。可以通过16进制来搭配颜色,呈现出最好的图像。
散点图绘制
代码:
import matplotlib.pyplot as plt
import numpy as np
# 1.数据获取
x = np.arange(100)
y = np.sin(x) + np.random.random()
# 2.创建画布
plt.figure(figsize=(20, 8), dpi=100)
# 3.绘制散点图
plt.scatter(x, y, s=30, c=y, marker='o', cmap='coolwarm')
# 4.显示图像
plt.show()
输出:
柱状图的绘制
代码:
import matplotlib.pyplot as plt
# 中文显示问题
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
# 1.数据获取
movie_names = ['股东局中局', '扬名立万', '雄狮少年', '曾经相爱的我们', '长津湖', '铁道英雄', '门锁']
ticks = [3108, 2102, 674, 600, 333, 203, 118]
# 2.创建画布
plt.figure(figsize=(20, 8), dpi=100)
# 3.绘制柱状图
plt.bar(movie_names, ticks, width=0.4, align='center', color=['b', 'r', 'g', 'y', 'c', 'm', 'k'])
# 4.图像显示
plt.show()
结果输出:
柱状图的绘制升级版
需求说明:柱状图的一块区域内,绘制两个柱状图。
代码:
import matplotlib.pyplot as plt
import numpy as np
# 1.数据获取
ticks = np.array([3108, 2102, 674, 600, 333, 203, 118])
ticks_data = ticks / 7
movie_names = ['股东局中局', '扬名立万', '雄狮少年', '曾经相爱的我们', '长津湖', '铁道英雄', '门锁']
# 2.创建画布
plt.figure(figsize=(20, 8), dpi=100)
# 3.绘制柱状图
plt.bar(np.arange(7)-0.2, ticks, width=0.4, label='一周票房', color='r')
plt.bar(np.arange(7)+0.2, ticks_data, width=0.4, label='一周票房', color='g')
plt.xticks(range(7), movie_names)
plt.legend()
# 4.图像显示
plt.show()
输出:
直方图的绘制
代码:
import matplotlib.pyplot as plt
import numpy as np
# 1.数据获取
x = [155, 153, 162, 166, 164, 164, 175, 173, 173, 181, 188, 188, 182, 190]
# 2.创建画板
plt.figure(figsize=(10, 8), dpi=100)
# 3.绘制图像
plt.hist(x, bins=np.arange(150, 195, 10), density=False, color='g', label='直方图绘制')
plt.xticks(range(150, 191, 10))
# 4.图像显示
plt.show()
输出:
直方图绘制2,以占有比例绘图
代码:
import matplotlib.pyplot as plt
import numpy as np
# 1.数据获取
x = [155, 153, 162, 166, 164, 164, 175, 173, 173, 181, 188, 188, 182, 190]
# 2.创建画板
plt.figure(figsize=(10, 8), dpi=100)
# 3.绘制图像
plt.hist(x, bins=np.arange(150, 195, 10), density=True, color='g', label='直方图绘制')
plt.xticks(range(150, 191, 10))
# 4.图像显示
plt.show()
输出:
饼状图绘制
代码:
import matplotlib.pyplot as plt
# 1.数据获取
movie_names = ['股东局中局', '扬名立万', '雄狮少年', '曾经相爱的我们', '长津湖', '铁道英雄', '门锁']
ticks = [3108, 2102, 674, 600, 333, 203, 118]
# 2.创建画布
plt.figure(figsize=(200, 8), dpi=100)
# 3.绘制饼状图
plt.pie(ticks, labels=['股东局中局', '扬名立万', '雄狮少年', '曾经相爱的我们', '长津湖', '铁道英雄', '门锁'], colors=['#FF8C00', '#2F4F4F', '#FFFAF0', '#FFD700', '#7CFC00', 'r', '#A0522D'], autopct='%1.2f%%', shadow=False, radius=.8)
plt.legend(loc='upper right')
# 4.图像显示
plt.show()
输出:
学习地址:
黑马程序员Python教程,4天快速入门Python数据挖掘,系统精讲+实战案例_哔哩哔哩_bilibili