Excel下三角图解的绘制
Excel下三角图解的绘制
1. 问题由来
Microsoft Excel已经提供了大量的图表类型,但仍然有一些图表类型没有提供,例如在地学中需要经常应用的三角图,就没有提供,一般来说,这类问题有几种解决方式,或者找一个可以绘制三角图解的软件,比如Grapher 3.x以上版本;或者使用CorelDraw,Visio这样的软件通过绘图方式不精确的实现;或者在Excel中通过某种办法来“迂回”实现。
最后一种办法是笔者比较喜欢的方法,也是本文将要介绍的方法。
2. 解决思路
首先,需要知道三角图解是如何绘制的。三角图有X、Y、Z三个轴,和其他直角坐标系图解不同,X、Y、Z三个轴的值范围都是0~100,且满足X+Y+Z=100,所以,X、Y、Z一般代表其百分含量。
所以,我们的思路是通过坐标变换来将X、Y、Z三个变量变换到二维坐标系统的散点图(Scatter Chart),然后再绘制到图表中,而三角图的坐标轴以及刻度线都可以通过添加数据绘制,然后隐藏掉Excel散点图的坐标轴,一个三角图解就绘制完成了。
假设我们将绘制的三角图三个轴都设置为200的长度,散点图的圆点坐标设置在三角图的正下方(见上图),那么对于三角图中的任意点,其在散点图中的坐标是:
ScatterX = (100 - 200 * Y / (Y + Z)) * (100 - X) / 100
ScatterY = X * 1.732051[①]
公式的推导是很简单的三角运算,应用此公式,我们就可以开始绘制三角图解了。
3. 绘制三角形和坐标点
首先在Excel中添加一个散点图,不添加数据,此时,这个图只是一个空白的方框。
需要说明的是,三角图解的坐标轴和数据点都是通过Excel图表的数据系列绘制的,在Excel中,一个图表可以最多添加256个数据系列,每个系列的格式(线性、数据标志都可以不同),所以要绘制此图解,我们就可以使用Excel的数据系列,逐个绘制所有内容。
3.1. 绘制三角形和坐标刻度
三角形和刻度的绘制需要知道所有三角坐标的坐标值,然后通过上文所述的公式变换得到需要的坐标,然后添加到散点图中。然后设置三角图的线性、符号等等。
3.2. 绘制坐标点
绘制好以上三角形后,就可以将坐标点通过上文公式变换为直角坐标系下的坐标,通过添加数据系列直接添加到图中,这样,坐标点也就绘制到三角图中了。
完成后,可以修改坐标点的格式、线性等内容。
3.3. 完成绘制
最后修改图表格式,去掉坐标轴,一个三角图解即绘制完成,你可以将此图留做模版,每次使用时只需要修改坐标点即可。
4. 结论
以上方法,思路很直接,也很简单,需要的工作量也不是很大,完全得益于Excel良好的设计和扩充性。而通过VBA编写一个加载宏,我们还可以给Excel增加一个功能,和别人分享你的成果。
附:
笔者编写的GCDPlot(免费、非开源)也有三角图绘制功能,文中三角图为GCDPlot绘制,需要者请参考:
介绍:http://www.cnblogs.com/maweifeng/archive/2004/12/26/82103.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架