python绘制散点图-同一图像绘制多散点图-plt.scatter()函数

绘制散点图

这里绘制散点图的数据来源为我研究项目的缺陷统计文档,文档格式为.txt格式,数据形式如图1所示,其中,每一行的第一个元素为类别信息,第二个元素为面积信息,第三个元素为标注框的高H,第四个元素为标注框的宽W.
这里绘制的散点图为每一类缺陷的长宽比,假设swelling有100个,则绘制图像的横坐标最大值为100,即横坐标表示的是某一类的数量信息.纵坐标为缺陷的长宽比.

图1 绘制散点图的数据格式截图

对绘制散点图的数据来源有一定了解之后,我们直接编写代码,绘制图像.

from pylab import *
import numpy as np
import pandas as pd
from PIL import Image


#需要修改读取文件的名字和保存文件的名字
#读取存储数据的.txt文档,文档数据格式为:
filename = r'C:\Users\14188\Desktop\1123\数据集分析\面积\analysis_result.txt'

Area,X_dis,Y_dis=[],[],[]
bulge_arr,pit_arr,scratch_arr,hole_arr,wrinkle_arr,crackle_arr,scar_arr,swelling_arr=[],[],[],[],[],[],[],[]
#读取excel文档数据,这里读取的是txt数据.
# loandata=pd.DataFrame(pd.read_excel('loan_data.xlsx'))
classes = ["bulge", "pit", "scratch", "hole", "wrinkle", "crackle", "scar", "swelling"]
#新建列表,分别用于存放不同了类别缺陷的长宽比,这个长宽比最终表现为散点图的纵坐标.
bulge_wh,pit_wh,scratch_wh,hole_wh,wrinkle_wh,crackle_wh,scar_wh,swelling_wh=[],[],[],[],[],[],[],[]
#打开txt文档
with open(filename, 'r') as f:
    # 将txt中的数据逐行存到列表lines里 lines的每一个元素对应于txt中的一行。然后将每个元素中的不同信息提取出来
    lines = f.readlines()
    # i变量,由于这个txt存储时有空行,所以增只读偶数行,主要看txt文件的格式,一般不需要
    # j用于判断读了多少条,step为画图的X轴
    k=j = 0
    #类别_nume用来统计每一类缺陷的数量,即每类缺陷一共有多少个.类别_area用于求每一类缺陷的面积总和,这里绘制散点图是用不到这个变量.
    bulge_area, bulge_nume, pit_area, pit_nume, scratch_area, scratch_nume, hole_area, hole_nume = 0, 0, 0, 0, 0, 0, 0, 0
    wrinkle_nume, wrinkle_area, crackle_area, crackle_nume, scar_area, scar_nume, swelling_area, swelling_nume = 0, 0, 0, 0, 0, 0, 0, 0
#读取文档的每一行。
    for line in lines:
        j = j + 1
        # #从图1可以看出,数据集中存在没有数据的空行,所以这里使用判断语句,跳过这些空行.
        if line!='\n':
            #使用','分隔符分割每一行,分割后每一行为含有四个元素的列表.
            num = line.split(',')
            print("**num[0]**", num[0])
            #如果为非空行,则判断该行第一个元素是否等于'bulge',如果等于,则该类别缺陷的数量加1,同时,将该类别缺陷的长宽比添加到bulge_wh列表中.
            if num[0]=='bulge':
                print("**num[0]**",num[0])
                bulge_arr.append(int(num[1]))
                bulge_area=int(num[1])+bulge_area
                bulge_nume=bulge_nume+1
                bulge_wh.append(int(num[2])/int(num[3]))
            if num[0]=='pit':
                pit_arr.append(int(num[1]))
                pit_area=int(num[1])+ pit_area
                pit_nume= pit_nume+1
                pit_wh.append(int(num[2]) / int(num[3]))
            if num[0] == 'scratch':
                scratch_arr.append(int(num[1]))
                scratch_area = int(num[1]) + scratch_area
                scratch_nume = scratch_nume + 1
                scratch_wh.append(int(num[2]) / int(num[3]))
            if num[0] == 'hole':
                hole_arr.append(int(num[1]))
                hole_area = int(num[1]) + hole_area
                hole_nume = hole_nume + 1
                hole_wh.append(int(num[2]) / int(num[3]))
            if num[0] == 'wrinkle':
                wrinkle_arr.append(int(num[1]))
                wrinkle_area =int(num[1]) + wrinkle_area
                wrinkle_nume = wrinkle_nume + 1
                wrinkle_wh.append(int(num[2]) / int(num[3]))
            if num[0] == 'crackle':
                crackle_arr.append(int(num[1
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值