大家有哪些论文图表绘制必备技能
怎么提取原始数据大概有以下几种方法:
方法一:
有些杂志要求作者上传图表的数据,所以可以直接去杂志上下载。
方法二:
利用已有的软件,这些软件都支持图片选点,然后给出点的数据。如:
? DataThief
? Engauge Digitizer
? GetData Graph Digitizer
方法三:
可能大部分杂志不适合方法一,然后方法二的精度你可能认为不够,还有一种方法就是自己进行图像处理。比如 python 的 PIL 库。
假设现在需要以下图片数据。
图1.需要提取数据的图
『一』导入相关 python 库import matplotlib.pyplot as pltfrom PIL import Imageimport numpy as np
『二』读取图片
利用 PIL 读取图片,并将图片转换为灰度模式 (白色为 255,黑色为 0)。读取每个像素的灰度值存入数组。# 读取图片img = Image.open("sin.png")# 转换为灰度值img = img.convert("L")# 读取灰度值r,c = img.size #图片大小gray = np.zeros(img.size)for i in range(r): for j in range(c): gray = img.getpixel((i,j))
『三』建立数据坐标与像素坐标的关系
根据图中具有特征的行 ( 列),确定该行 ( 列) 的像素坐标和数据坐标,进而确定数据坐标和像素坐标的关系。
在该例子中,图的边框为图中具有特征的行 (列),边框的数据坐标已知 (x: 0和10,y: -1和1)。像素坐标可以通过其灰度值特征得到。图的边框上黑色较多,如果将每行上的像素相加,边框的地方数值会小,如下图。plt.plot(np.sum(gray,axis=1))
图2.某列上灰度值的和,横坐标为像素的X坐标灰度值的和为最小的像素位置是边框的位置,据此可以求得边框四条线的像素坐标。x = np.sum(gray,axis=1)xmin = np.where(x == min(x))xmax = np.where(x == min(x))y = np.sum(gray,axis=0)ymin = np.where(y == min(y))ymax = np.where(y == min(y))print ymin,ymax,xmin,xmax#### (array(),) (array(),) (array(),)(array(),)
确定了边框的像素坐标,就可以确定像素坐标和数据坐标的关系了。
【大家有哪些论文图表绘制必备技能】 『四』选出数据
先选出边框内的灰度值数据矩阵。ymin = 144ymax = 1051xmin = 224xmax = 1620data = https://www.zhihu.com/api/v4/questions/60320192/gray
现在需要选出数据点的像素坐标,所以需要判断某点是数据点还是空白。同样地,可以根据灰度值的差别确定某点是数据点还是空白。先任选一列看其灰度值。
图3. 某列的灰度值如上图,有数据的地方灰度值在100 左右,根据该条件,选取数据点,并得到数据点的像素坐标。# 数据点像素坐标:coorcoor = np.argwhere(abs(data-100) \u0026lt; 50)
根据上面确定的关系,将数据点像素坐标转换为数据坐标,并画图。x_data = https://www.zhihu.com/api/v4/questions/60320192/coor.T/1396.*10y_data = coor.T/907.*2 -1plt.plot(x_data,y_data)
推荐阅读
- 医院|感染艾滋病毒初期有哪些征兆?可以自行检查吗?共用马桶会传染吗
- 玩游戏花钱最多的有哪些游戏,哪些人
- 旅行|需要准备哪些物品?全面冬季出游清单,建议收藏带宝宝出门旅行
- 红米手机通过QQ空间的成功营销,给涉足社会化营销的企业有哪些启示
- 互联网在线音乐行业有哪些可能的盈利模式
- 直播会成为品牌传播的另一个途径么有哪些可行的方法感觉有戏又没头绪好捉急。
- 侧重业务逻辑的产品需求规格说明书,需要有哪些要点
- 大学|上海大学第8,前10名有哪些高校?上海市30所大学排名
- 学图像处理有哪些不错的书推荐
- 新浪微博创新基金投资了哪些团队