首页 > 编程语言 >python-数据分析-Matplotlib-1-基础图形(曲线图-散点-柱状-堆叠柱状-饼状图-直方图)

python-数据分析-Matplotlib-1-基础图形(曲线图-散点-柱状-堆叠柱状-饼状图-直方图)

时间:2024-06-12 15:34:37浏览次数:32  
标签:plt 函数 show python 柱状 savefig 直方图 np

曲线图

# -*- coding: utf-8 -*-
#基础、曲线图

import numpy
import matplotlib.pyplot as plt

#设置字体 SimHei: 黑体
#需要注意的是,使用中文字体后坐标轴上的负号将会无法显示,需要将`axes.unicode_minus`参数设置为`False`,这样才能让坐标轴上的负号正常显示
plt.rcParams['font.sans-serif'].insert(0, 'SimHei')
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

#如果使用的是Jupyter Notebook、通过下面的魔法指令,我们可以在绘图时生成矢量图(SVG - Scalable Vector Graphics),矢量图的特点是不会因为放大、缩小或旋转等操作而失真
#%config InlineBackend.figure_format = 'svg'

#创建画布
#画布大小、分辨率、背景色
#figure()函数可以用来创建画布 figure函数的返回值是一个Figure对象,它代表了绘图使用的画布
##figsize参数指定画布的尺寸(默认值是[6.4, 4.8])
#dpi参数指定画布的分辨率(默认值是100)
#facecolor参数指定画布的背景色(默认值是白色)
plt.figure(figsize=(10,10), dpi=120, facecolor='darkgray')

#创建坐标系
#subplot()函数来创建坐标系,该函数会返回Axes对象
#subplot的前三个参数分别用来指定整个画布分成 几行几列 以及当前 坐标系的索引 ,这三个参数的默认值都是1
#也可以通过上面创建的Figure对象的add_subplot方法或add_axes方法来创建坐标系,前者跟subplot函数的作用一致,后者会产生嵌套的坐标系
plt.subplot(2, 2, 1)    #创建一个2x2的网格,并选择第1个子图

#绘制图表 - 折线图
x = numpy.linspace(-2 * numpy.pi, 2 * numpy.pi, 120)    #生成120个点
y = numpy.sin(x)    #生成y值
#
# #刻度 可不画 默认自动
# plt.xticks([0, 2 * numpy.pi, 4 * numpy.pi, 6 * numpy.pi, 8 * numpy.pi, 10 * numpy.pi, 12 * numpy.pi])

#创建画布
plt.figure(figsize=(8, 4), dpi=120)
#绘制折线图
#linewidth参数指定线条的粗细,默认值是1
#marker参数指定线条的标记(用什么符号来画曲线),默认值是None,即不显示标记
#color参数指定线条的颜色,默认值是黑色
plt.plot(x, y, linewidth=2, marker='+', color='red')

#如果要同时显示和保存图表,应该先执行savefig函数,再执行show函数,因为在调用show函数时,图表已经被释放,位于show函数之后的savefig保存的只是一个空白的区域
#保存图片
plt.savefig('直方图.png')
#显示绘图
plt.show()

散点图

# -*- coding: utf-8 -*-
#散点图

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5550, 7500, 10500, 15000, 20000, 25000, 30000, 40000])
y = np.array([800, 1800, 1250, 2000, 1800, 2100, 2500, 3500])

#创建画布
plt.figure(figsize=(8, 6), dpi=120)
#绘制散点图
#scatter 函数表示作用是绘制散点图
# plt.scatter(x, y)   #默认
# 自定义散点图
plt.scatter(x, y, s=100, c='red', alpha=0.5, marker='o', label='Data Points')


# 添加颜色条
# plt.colorbar(label='Color Mapping')

# 添加标题和标签
plt.title("Simple Scatter Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")

#如果要同时显示和保存图表,应该先执行savefig函数,再执行show函数,因为在调用show函数时,图表已经被释放,位于show函数之后的savefig保存的只是一个空白的区域
#保存图片
plt.savefig('直方图.png')
plt.show()

柱状图

# -*- coding: utf-8 -*-
#柱状图

import matplotlib.pyplot as plt
import numpy as np

#在对比数据的差异时,柱状图是非常棒的选择,我们可以使用pyplot模块的bar函数来生成柱状图,也可以使用barh函数来生成水平柱状图(也称为“条状图”)

#设置字体
plt.rcParams['font.sans-serif'].insert(0, 'SimHei')
plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题

x = np.arange(4)
y1 = np.random.randint(20, 50, 4)
y2 = np.random.randint(10, 60, 4)

#绘制画布
plt.figure(figsize=(6, 4), dpi=120)
#绘制柱状图
## 通过横坐标的偏移,让两组数据对应的柱子分开,width参数控制柱子的粗细,label参数为柱子添加标签
plt.bar(x - 0.1, y1, width=0.2, label='A组')
plt.bar(x + 0.1, y2, width=0.2, label='B组')

#定制横轴 x 的刻度
plt.xticks(x, ['Q1', 'Q2', 'Q3', 'Q4']) #如果不定制、会默认显示 按x或y轴的数据来画

#配置label标签的位置
#'best':自动选择最合适的位置(默认值)
#'upper right':右上角
#'upper left':左上角
#'lower left':左下角
#'lower right':右下角
#'right':右侧
#'center left':左侧居中
#'center right':右侧居中
#'lower center':下方居中
#'upper center':上方居中
#'center':居中
plt.legend(loc='upper right')

#如果要同时显示和保存图表,应该先执行savefig函数,再执行show函数,因为在调用show函数时,图表已经被释放,位于show函数之后的savefig保存的只是一个空白的区域
#保存图片
plt.savefig('直方图.png')
#显示图形
plt.show()

堆叠柱状图

# -*- coding: utf-8 -*-
#堆叠柱状图

import matplotlib.pyplot as plt
import numpy as np

#设置字体
plt.rcParams['font.sans-serif'].insert(0, 'SimHei')
plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题

x = np.arange(4)
y1 = np.random.randint(20, 50, 4)
y2 = np.random.randint(10, 60, 4)

labels = ['Q1', 'Q2', 'Q3', 'Q4']

#绘制画布
plt.figure(figsize=(6, 4), dpi=120)

#绘制柱状图
plt.bar(labels, y1, width=0.4, label='A组')
## 注意:堆叠柱状图的关键是将之前的柱子作为新柱子的底部,可以通过bottom参数指定底部数据,新柱子绘制在底部数据之上
#bottom 参数指定为y1,即在A组柱子的数据上
plt.bar(labels, y2, width=0.4, bottom=y1, label='B组')

#配置label标签的位置
#'best':自动选择最合适的位置(默认值)
#'upper right':右上角
#'upper left':左上角
#'lower left':左下角
#'lower right':右下角
#'right':右侧
#'center left':左侧居中
#'center right':右侧居中
#'lower center':下方居中
#'upper center':上方居中
#'center':居中
plt.legend(loc='upper right')

#如果要同时显示和保存图表,应该先执行savefig函数,再执行show函数,因为在调用show函数时,图表已经被释放,位于show函数之后的savefig保存的只是一个空白的区域
#保存图片
plt.savefig('直方图.png')
#显示
plt.show()

饼状图

# -*- coding: utf-8 -*-
#饼状图
#是一个将数据划分为几个扇形区域的统计图表,它主要用于描述数量、频率等之间的相对关系
#在需要展示数据构成的场景下,饼状图、树状图和瀑布图是不错的选择,我们可以使用pyplot模块的pie函数来绘制饼图


import matplotlib.pyplot as plt
import numpy as np

#设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#准备数据
data = np.random.randint(100, 500, 7)   #随机生成7个数据、随机生成100-500之间的整数
labels = ['苹果', '香蕉', '桃子', '荔枝', '石榴', '山竹', '榴莲']

#绘制画布
plt.figure(figsize=(5, 5), dpi=120)

#绘制饼图
plt.pie(
    data,
    #自动显示百分比
    autopct='%.1f%%',
    #饼图的半径
    radius=1,
    #百分比到饼图中心的距离
    pctdistance=0.8,
    #颜色(随机生成)
    colors=np.random.rand(7, 3),
    #分离距离、数量要与data长度一致
    explode=[0.05, 0, 0.1, 0, 0, 0, 0],
    #阴影效果
    shadow=True,
    #字体属性
    textprops=dict(fontsize=10, color='black'),
    # # 楔子属性(生成环状饼图的关键)
    wedgeprops=dict(linewidth=1, width=0.35),
    #标签
    labels=labels
)

#定制图表标题
plt.title('水果销量', fontsize=15)

#如果要同时显示和保存图表,应该先执行savefig函数,再执行show函数,因为在调用show函数时,图表已经被释放,位于show函数之后的savefig保存的只是一个空白的区域
#保存图片
plt.savefig('直方图.png')
plt.show()

直方图

# -*- coding: utf-8 -*-
#直方图
#在统计学中,直方图是一种展示数据分布情况的图形,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量
#使用pyplot模块的hist函数来绘制直方图,其中bins参数代表了我们使用的分箱方式

import matplotlib.pyplot as plt
import numpy as np

#设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#创建数据- 数组
heights = np.array([
    170, 163, 174, 164, 159, 168, 165, 171, 171, 167,
    165, 161, 175, 170, 174, 170, 174, 170, 173, 173,
    167, 169, 173, 153, 165, 169, 158, 166, 164, 173,
    162, 171, 173, 171, 165, 152, 163, 170, 171, 163,
    165, 166, 155, 155, 171, 161, 167, 172, 164, 155,
    168, 171, 173, 169, 165, 162, 168, 177, 174, 178,
    161, 180, 155, 155, 166, 175, 159, 169, 165, 174,
    175, 160, 152, 168, 164, 175, 168, 183, 166, 166,
    182, 174, 167, 168, 176, 170, 169, 173, 177, 168,
    172, 159, 173, 185, 161, 170, 170, 184, 171, 172
])

#绘制画布
plt.figure(figsize=(6, 4), dpi=120)

#绘制直方图
#bins: 直方图的分箱方式、bins数组可以用于定义每个柱的边界
#density: 是否将频率转换为概率密度 density=True时:直方图显示的是概率密度而不是频数。这样,每个柱的高度表示在该区间内数据的概率密度,而整个直方图的面积和为1。
#cumulative: 是否将频率转换为累计频率
#numpy.arange(145, 196, 5):生成从145到195的一个步长为5的数列 - 表示X轴
#横轴(X轴)代表身高的范围 纵轴(Y轴)代表人数(统计数量)
# plt.hist(heights, bins=np.arange(145, 196, 5), color='darkcyan')  #'darkcyan' 是一种深青色
plt.hist(heights, bins=np.arange(145, 196, 5), color='darkcyan', density=True, cumulative=True)

#设置x轴标签
plt.xlabel('身高')
#设置y轴标签
plt.ylabel('人数')
#设置标题
plt.title('身高直方图')

#如果要同时显示和保存图表,应该先执行savefig函数,再执行show函数,因为在调用show函数时,图表已经被释放,位于show函数之后的savefig保存的只是一个空白的区域
#保存图片
plt.savefig('直方图.png')
#显示
plt.show()

 

标签:plt,函数,show,python,柱状,savefig,直方图,np
From: https://www.cnblogs.com/littlecc/p/18244035

相关文章

  • python-数字反转 ll
    [问题描述]:现在给出一个正整数n,请将n倒序输出(末尾是0也输出)输入:一行一个正整数n输出:一行一个正整数,表示数字n倒过来输出的结果样例输入112345678910111213样例输出131211101987654321提示1<=n<=10^5000来源/分类(难度系数:一星) 完整代码如下:a=list(input())a......
  • python - pip安装三方库超时、安装慢解决办法
    前言:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org',port=443):今天在一台新的电脑上时候pip下载requests库,报错这个链接超时的错误。我们直......
  • Python 详述 Python 中的 property 语法
    在大多数语言的程序中,一个类,每有一个属性,就会对应setter和getter,基本都是标配。示例:classMoney(object):def__init__(self):self.__money=0defgetMoney(self):returnself.__moneydefsetMoney(self,value):ifisinsta......
  • python通过COM接口调用CANoe工具实现相关操作
    使用Python来操作CANoe(一个用于汽车总线系统设计、分析、仿真和测试的强大工具),你可以借助win32com库来实现。这涉及到使用COM接口来控制CANoe。以下是一个示例,演示了如何使用Python通过win32com库来操作CANoe。一、前提条件安装Python和win32com库:确保你已经安装了Python......
  • [数据分析与可视化] 基于Python绘制简单动图
    动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化。本文的主要介绍在Python中两种简单制作动图的方法。其中一种方法是使用matplotlib的Animations模块绘制动图,另一种方法是基于Pillow生成GIF动图。python学习资料已打包好,需......
  • 程序猿大战Python——容器——列表的基本使用
    列表的定义==目标:==掌握如何定义列表。列表类型为list,是Python中的一种常见类型。列表可以存放各种数据类型的数据,且列表的长度会随着添加数据的变化而变化。列表语法:变量名=[元素1,元素2,元素3,...]说明:列表的多个元素之间使用,逗号分隔。例如,一起来完成:(1)定义......
  • 程序猿大战Python——容器——字符串的遍历与常用的操作方法
    字符串的遍历使用for遍历字符串==目标:==掌握使用for语句遍历字符串。先来看看,for循环语法:for临时变量in序列: 满足条件时,执行的代码1 满足条件时,执行的代码2 ……[else:当for循环正常执行结束后,执行代码]例如,一起来完成:(1)定义一个字符串变量,内......
  • 程序猿大战Python——流程控制——其他控制语句
    for循环==目标:==掌握for循环的使用。与while循环功能类似,for语句也能完成反复多次的执行。for语法:for临时变量in序列: 满足条件时,执行的代码1 满足条件时,执行的代码2 ……[else:当for循环正常执行结束后,执行代码]说明:序列指的是能被循环处理......
  • Centos7.9安装Python3.8.16解决yum无法使用问题
    Centos7.9安装Python3.8.16解决yum无法使用问题文章目录前言一、前期准备1.下载到新建目录2.安装依赖二、编译1.解压2.编译安装3.建立命令软链接3-1.查看默认的python及新安装的python3都安装在哪?3-2.修改python3的软链接3-3.修改pip的软链接三、修复yum1.查看python......
  • 【Python】成功解决ModuleNotFoundError: No module named ‘PyQt5‘
    【Python】成功解决ModuleNotFoundError:Nomodulenamed‘PyQt5’ 下滑即可查看博客内容......