# MatlabDrawNiceGraph
**Repository Path**: iam002/MatlabDrawNiceGraph
## Basic Information
- **Project Name**: MatlabDrawNiceGraph
- **Description**: 打算做一个 Matlab 可视化和美化的一个仓库
- **Primary Language**: Matlab
- **License**: MulanPSL-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 3
- **Created**: 2021-08-17
- **Last Updated**: 2024-06-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Matlab
## README
# MatlabDrawNiceGraph
### 介绍
本仓库对 Matlab 相关的绘图/标注函数进行一定的封装(`+mdng`),以简化 Matlab 部分绘图工作,目前实现的功能有:
- 坐标转换 [mdng.CoorFromAxis2Fig](./+mdng/CoorFromAxis2Fig.m)
进行坐标转换,将点在坐标轴(axis)上的坐标转换为在图窗(figure)的归一化坐标。
- 文字标注 [mdng.FigPointLabel](./+dng/FigPointLabel].m)
在图窗上的某点附近添加文字。结合函数 [mdng.CoorFromAxis2Fig](./+mdng/CoorFromAxis2Fig.m),可以很方便在 axis 上添加文字(只需知道该点在 axis 的坐标)。
- 绘制带箭头的坐标系 [mdng.DrawAxisWithArrow](./+dng/DrawAxisWithArrow.m)
**自动确定**坐标原点在图窗的位置,并以此来绘制带箭头的坐标系。
- 绘制直线、单向箭头和双向箭头 [mdng.DrawLine](./+mdng/DrawLine.m)
> 参考 matlab 可选参数的设计,函数支持使用 `Key-Value` 对来修改对应字段的默认值,例如:
>
> ```matlab
> mdng.DrawAxisWithArrow(gca, 'XLabel', '$\hat{x}$');
> ```
>
> 指定 x 轴的标签,y 轴等未设置的字段均使用默认值。
此外, 添加了函数签名文件 `functionSignatures.json` 支持编辑器内的代码提示. 此文件由程序自动生成 (对代码注释有一定的格式要求,具体见 [https://gitee.com/iam002/generate-function-signatures-json](https://gitee.com/iam002/generate-function-signatures-json)).


### 运行
如果想要在自己的工程中运行,需要:
1. 将包 `+mdng` 复制到你的工程目录下,调用包内的函数需加前缀 `mdng.`
2. 添加当前工程目录添加到 Matlab 的搜索目录 (推荐)
### 实例
1. 绘制带箭头的坐标系,见 [demo01.m](https://gitee.com/iam002/MatlabDrawNiceGraph/blob/main/demo01.m)
```matlab
figure('color', [0.15, 0.15, 0.15]);
x = linspace(-3, 4, 100);
y = x.^2;
plot(x, y, 'Color', [0,1,1], 'LineWidth', 1.5);
mdng.DrawAxisWithArrow(gca, 'XLabel', '$x$', 'YLabel', '$y$', 'OLabel', '$O$');
```
2. 绘制两个带箭头的坐标系,见 [demo02.m](https://gitee.com/iam002/MatlabDrawNiceGraph/blob/main/demo02.m)
3. 稍微复杂的例子,见 [demo03.m](https://gitee.com/iam002/MatlabDrawNiceGraph/blob/main/demo03.m)
4. 绘制双箭头,见 [demo4.m](https://gitee.com/iam002/MatlabDrawNiceGraph/blob/main/demo04.m)
## Todo
- [x] 新增函数签名文件 `functionSignatures.json` 支持编辑器内的代码提示.