检验仪器画散点图显示求助 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
qile1
V2EX    程序员

检验仪器画散点图显示求助

  •  
  •   qile1 2020-05-24 14:37:50 +08:00 2179 次点击
    这是一个创建于 1967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前给朋友吹下牛说自己可以处理大部分仪器的数据,这周收到一份数据,看了好几天文档,把每个英文句子翻译后仔细研究还是没看懂这段数据如何处理

    朋友说这个一共 6 组数据,4 组 是常见的(中性 噬酸 淋巴 单核) 64 次嵌套 64 次两层 for 循环,但是他也没有完全画出图像!

    我咨询了另外一个 pb 开发人员他把画出的图像发我,但是由于我使用的 python 他使用 pb,没有问清楚是怎么处理了,特发到论坛请教下大家(主要是想学习下):

    下面是相关文件下载地址

    https://bitsend.jp/filesgroup/a190c44286b0559a6f0465eed0e2e346.html

    各个文件说明:

    ** DxH 500 Series.pdf 是仪器数据的接口说明文档,里面有图像如何处理的说明,没有看明白 **

    200520.txt #仪器传输过来的原始数据

    20200520_232!OV_5DIFF.jpg 和 20200520_236!OV_5DIFF.jpg 是朋友解码正确的两个散点图

    200520.txt 文件样例如下(<STX><ETB>为传输控制符)

    <STX>2M|3|!!!5DIFF|622A01010240004000000A5004040 省略图像数据 0000000<ETB>56 <STX>300000000 省略图像数据 0000000<ETB>38 <STX>400000000 省略图像数据 0000000<ETB>3E 

    我处理时候 将头部的“<STX>2M|3|!!!5DIFF|”、“<STX>3”、“<STX>4” 和尾部 “<ETB>3E”删除,然后取两位由 16 进制转为 10 进制数据 类似如下内容,引号里面的内容是我删除的

    622A01010240004000000A5004040 ***** 0000000“<etb>56\n<STX>3”00000000 ******0000000“<ETB>38\n<STX>4”00000000 ****** 0000000“<ETB>3E” 转换后数据: ‘622A01’对应数据 [ 62>98,2A>42,01>1 ] 

    这个设备是一个用于研究血液的科研仪器

    13 条回复    2020-05-31 00:22:35 +08:00
    ku9527
        1
    ku9527  
       2020-05-24 22:37:10 +08:00
    你这个需要知道具体数据的意义才能画图吧,如第一个病人的数据 4.88*10e9/L,横坐标和纵坐标分别是啥?
    qile1
        2
    qile1  
    OP
       2020-05-24 22:53:26 +08:00 via Android
    @ku9527 DxH 500 Series.pdf 这个文件有具体说明,但是我一直没有理解里面说的是啥,结果和直方图我都可以处理,就是散点图我用 python 不知道如何画图,具体描点从哪里开始,什么颜色,看了那个文档还是不知道如何下手
    ku9527
        3
    ku9527  
       2020-05-24 23:23:30 +08:00
    哪有啊,那只是通讯协议,4.88 这是个医学数据,你最后会拿到一堆这样的数据。要作图,你总得知道你图的横坐标代表甚,纵坐标代表甚吧
    qile1
        4
    qile1  
    OP
       2020-05-25 00:39:42 +08:00
    @ku9527 感谢回复,”DxH 500 Series.pdf“这个文件的 APPENDIX D Graphic Results and Dataplots 标签,也就是 D-1 页 开始说明画图方法,”Histograms“为直方图 ”Dataplots“为散点图的说明!
    4.88*10e9/L 这个是 wbc 项目的结果和单位,就是白细胞的值是 4.88 单位 10e9/L
    ku9527
        5
    ku9527  
       2020-05-25 12:45:24 +08:00
    仔细看了,你的理解有误吧, ‘622A01’对应数据为三个字节 : 0x2a62 代表字节数,你不能把 62 转成 98,那不对,0x01 代表只持一个数据块。这样后面你就能做图了吧
    ku9527
        6
    ku9527  
       2020-05-25 19:50:03 +08:00
    而且你给出的图,最后颜色也不对呀,10 个调色板数据如下 :
    1, red=0, green=0, blue=0
    2, red=0, green=101, blue=255
    3, red=115, green=166, blue=57
    4, red=214, green=52, blue=214
    5, red=255, green=125, blue=66
    6, red=255, green=255, blue=255
    7, red=140, green=138, blue=140
    8, red=0, green=144, blue=144
    9, red=206, green=206, blue=206
    10, red=221, green=238, blue=221
    我看你图上还有红色,哪个也对应不上红色啊
    qile1
        7
    qile1  
    OP
       2020-05-25 22:13:55 +08:00 via Android
    @ku9527 颜色不对也可能是他画的时候有问题,好像确实没有红色,明天我问问看仪器上面有没有红色

    0x2a62 这个 0x2a 是哪里来的? “622A01”这个前面也没有数据,自己实在笨,你说从哪里看到调色板颜色的
    ku9527
        8
    ku9527  
       2020-05-25 22:46:39 +08:00
    622A01,中间不就是 2A 来吗
    ku9527
        9
    ku9527  
       2020-05-25 22:48:37 +08:00
    调色板在 D-3 那页,Table D.5 Rendering information block
    qile1
        10
    qile1  
    OP
       2020-05-26 16:39:24 +08:00 via Android
    https://bitsend.jp/download/80fa17e3969192a961f8f81c110222dd.html
    这个是仪器图像的照片
    @ku9527
    “622A01” 我把 622A 转为十进制数就是图像数据长度,然后按两个字符作为十六进制转为 10 进制来处理数据,是不是还得分割成几个图像才可以?

    再次感谢回复我的主题。
    ku9527
        11
    ku9527  
       2020-05-26 21:04:39 +08:00   1
    @qile1 这个图像颜色对,是那个调色板的颜色。图像不是分隔的。那个图像的 64 次循环是因为宽和高都是 64,在这个仪器上是这样。你要是换个更大的仪器,仪器显示屏更大的话,这个值可能会改变。对于 64*64 中的其中一个点,它不是直接画一个点,存的是那个 txt 文件中返回的系统图像库的索引。你要在那个点的位置画一个系统图像。该图像库大小为 0x50=80 个。不是你文档中的 120, 然后每个系统图像大小为 4*4d 大小。最终你画出的图像大小为 256*256.
    qile1
        12
    qile1  
    OP
       2020-05-26 21:16:32 +08:00 via Android
    @ku9527 收到,谢谢,说的太详细了
    qile1
        13
    qile1  
    OP
       2020-05-31 00:22:35 +08:00
    @ku9527 再请教下,我第一次尝试把数据 按 numpy.reshape(64,64) 分成 64*64,然后画到一个 64*64 表格里面,但是图像发布不是样例那样的类型,您说的图像索引是不是分成 64 行后取第一个作为颜色索引?

    我又尝试从 最后一组颜色“221,238,221”后面开始截取数据:即原来数据是 4096 个 到 221 那个位置截取[44:]得到的是一个 4052 个的列表,我在一个 64*64 的画布上面 将每个数据转换为 plt.scatter(xv, yv, s=数据点 c=图像索引, marker='o') 画出来的图像是深紫色,而且也不是样例那样的散点图,请教您下,图像截取是否有误,获取图像索引的正确方法应该是啥,如有打扰,先说声抱歉。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2712 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:52 PVG 19:52 LAX 04:52 JFK 07:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86