设为首页收藏本站

JMP数据分析论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1119|回复: 0
打印 上一主题 下一主题

<软件应用>JMP居然可以画出蜡笔的RGB真实颜色?

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-11 14:05:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
众所周知,JMP是一款非常好用的数据分析软件,常常用于解决业务以及技术上的系列问题。近期我们又发现了关于JMP的一些趣味应用,比如绘制精美华丽的三元图来判定蜡笔的颜色坐标,再进行聚类分析。今天我们就这个有趣的小故事,再次领略JMP的魅力之处吧。

本文来源于JMP全球用户社区(JMP Community),作者:JMP技术顾问Mike Anderson,原文链接:https://community.jmp.com/t5/JMP ... ow-State/ba-p/50678 ,感兴趣的朋友也可以直接查看英文原文。

Jim是一个志愿工作者,与Mike是好朋友,两人经常在一起探讨问题。在志愿者工作过程中,Jim尝试利用JMP处理150个Crayola蜡笔的数据,去向学生们展示数据可视化的酷炫,激发他们对STEAM(Science, Technology, Engineering, Art & Design and Mathematics:科学,技术,工程,艺术设计和数学)课程的学习兴趣。

说干就干,通过自己的努力,Jim已经能够利用蜡笔每一行的颜色坐标(R,G,B)毫无困难地绘制出三元图。为了让三元图更加生动,Jim尝试将RGB坐标系下描述的颜色与行状态代表的颜色相匹配,最终通过手动操作成功完成匹配,但手动操作的过程相当繁琐。他认为应该会有更简单的方法,但自己绞尽脑汁也无果,因此他向Mike发出求助。

Jim的原始数据如下:


不久后Jim收到了Mike的回复。Mike给出的答案是脚本,让我们一起来看看他究竟是怎么做出来的呢?

为了设置单元格颜色和行状态颜色,Mike利用JMP以不同的格式格式化RGB坐标,使RGB值在0-1之间缩放。此外为了尽量说明他所做的事情,他新建了三列(红、绿、蓝)重新去缩放RGB坐标为0-1。新建的表脚本为“Color Cells”,这里是奇迹发生的地方。

接下来Mike进行了两步操作。第一步,使用For Each Row()循环和Color Name << Color Cells()指令遍历每一行以设置单元格颜色。同样,为了增强创建过程的透明度,第二步使用了for()循环,利用已创建的列设置行状态。

Mike写的着色脚本如下:


运行这个脚本就会得到Jim想要的彩色表格,Mike发回的数据表如下:


是不是非常的简单快捷呢?

运行的过程中Mike注意到虽然现在的这个表丰富多彩,但使用这种数据做行状态着色操作需要强大的可视化。由于JMP绘制三元图要求RGB三个坐标值之和为1,当提供的数据不符合此标准时,它会对数据点进行标准化。所以说三元图虽然非常简洁,但它并不是颜色空间的100%精确表示。因为这个练习的目的是为了创建一些激发学生们对STEAM兴趣的图像,在视觉效果上牺牲一些准确性是可以的。


那如何能100%精确表示RGB颜色空间呢?

Mike又开始了新的探索。他想到根据蜡笔颜色的相似度,使用层次聚类法对蜡笔分组,通过在RGB空间坐标上运行层次聚类生成星座图Constellation Plot,这可是他最喜欢的看树形图方式。

通过对数据运行分层聚类生成Constellation Plot


有没有看到星座图中大概有5-7组颜色,是不是很神奇呢?

紧接着Mike绘制了一幅有5组颜色的平行图。在这组颜色的平行图中可以看到,分组间各组颜色的差异性以及分组内各种颜色的相似性非常明显。更有趣的是,粉彩色和日辉色被分别放在了它们应属的归类中(种类2和种类3)。

粉彩色和日辉色被放入它们各自的种类(种类2和3)中,也可以使用K-Means聚类方法得到相似结果


Mike对Jim给出的数据集兴趣浓厚,他不断地进行自主思考、探究和拓展。尽管Mike已经解决了Jim提出的着色问题,并且拓展了如何100%精确表示颜色空间,但他一直在重新审视这个数据集。

Mike通过探索发现使用For Each Row() 循环即可完成整个着色操作。并且通过新建列表并转换该列表可以简化代码,进而获得JMP所需的坐标集,而无需创建新列。(所以说,探索新事物需要多次尝试,每尝试一次都会有新的发现、新的感悟、新的收获。)

简化后的着色代码如下:


Mike真的是超喜欢Jim原始数据集中的三元图(不考虑精度问题)。他大开脑洞,想到假设生成一个能映射出RGB空间中所有组合的空间填充示例,会发生什么?由于篇幅有限,而撰写的脚本比较复杂,Mike把这个命名为RGB Color Space Mapping的脚本上传到“File Exchange”,有兴趣的朋友也可以去看看。https://community.jmp.com/t5/JMP ... irst-unread-message

下图就是Mike生成的一个空间填充示例,可以看到该示例映射出了RGB空间中的所有组合,是不是很厉害?

空间填充示例图


以上就是关于JMP的一个趣味妙用,不知道这样强大的三元图和聚类分析,你学会了吗?

了解更多关于JMP的实用技巧、免费学习资源和最新活动,关注JMP官方微信公众号





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  !connect_viewthread_share_to_qq!!connect_viewthread_share_to_qq! QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|JMP数据分析论坛 ( 沪ICP备13022603号-2 )  

GMT+8, 2024-4-29 21:05 , Processed in 0.367263 second(s), 17 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表