绘图扮演着相位图的角色。每个数据集是一组值对 𝑥,𝑦x,y。绘图 显示数据集中的 Y 值与相应的 X 值相对应地绘制在图表上。X 值映射到 X 轴,Y 值映射到 Y 轴。绘图可以同时显示多个数据集。您可以自定义图表的外观,只显示单独的点,或者用线条连接点。
您可以在许多方面使用此图表。例如,通过将 X 和 Y 值设置为移动对象的坐标,您将在图表上得到它们的轨迹。
创建绘图
- 从 分析 面板拖动 绘图 元素到图形编辑器。
- 在图表的 属性 中的 数据 部分添加并配置数据项。
- 首先,选择此数据项的数据来源 - 值 或 数据集。
- 如果您想显示一个变量(或参数)与另一个变量的绘制,选择 值 选项,在 X 轴值 中输入第一个变量的名称(您希望将其映射到 X 轴),在 Y 轴值 字段中输入您想映射到 Y 轴的变量名称。此外,您可以在这些字段中输入任何您想要的表达式。表达式将根据定义的重现时间进行评估,计算结果将添加到图表上。
- 否则,如果您想显示由某个数据集收集的值,选择 数据集 选项,并在下面的 数据集 字段中输入数据集的名称。
- 在 标题 编辑框中,输入将作为此数据项标题显示在图表图例中的文本。
- 从 点样式 下拉列表中选择标记样式。可选地,使用右侧的控件定义 线宽。
- 指定用于为此数据项绘制点和/或线的颜色。点击 颜色 控件中的箭头并选择您希望的颜色。
- 如果您想用线条连接点,在 外观 部分中选择 绘制线条 复选框并指定下面的控件中的呈现选项。使用 插值 下拉列表设置插值类型(阶梯 或 线性)。
添加数据项
默认情况下,新的绘图已经有一个数据项。如果您想添加另一个,请按照以下步骤操作:
- 在图形编辑器或 项目 视图中选择绘图。
- 转到 属性 视图的 数据 部分。
- 点击 添加 按钮。新的属性部分定义了一个要添加到绘图中的另一个数据项的设置。
移除数据项
- 在图形编辑器或 项目 视图中选择绘图。
- 转到 属性 视图的 数据 部分。
- 选择定义要从此绘图中移除的数据项的部分。
- 点击所有部分下面的 移除 按钮。
属性
通用
- 名称 — 图表的名称。名称用于从代码中识别和访问图表。
- 忽略 — 如果选中,图表将从模型中排除。
- 在上层代理上可见 — 如果选中,该图表也将在包含此代理的上层代理上可见。
数据
- 此按钮打开新的属性部分,允许配置您想要在此图表上可视化的另一个数据项。
- 标题 — 此数据集的标题,将显示在图表图例中。
- X 轴值 — [如果上面选择了 值 选项,则可见] 将评估以获得要添加到图表上的新 x 组件的表达式。
- Y 轴值 — [如果上面选择了 值 选项,则可见] 将评估以获得要添加到图表上的新 y 组件的表达式。
- 数据集 — [如果上面选择了 数据集 选项,则可见] 收集您想要在此图表上显示的值的数据集名称。
- 点样式 — 将用于在图表上显示数据集点的标记样式。
- 线宽 — [如果选择了 绘制线条] 连接图表上数据集点的线条宽度。
- 颜色 — 用于在图表上绘制此数据项值的颜色。点击控件并从最常用的颜色集合中选择一种颜色,或使用颜色对话框选择自定义颜色。
要从图表中移除数据项,请在数据项属性部分下面点击 移除 按钮。使用箭头 ↑ 和↓ 来安排数据项部分的顺序。
数据更新
- 不要自动更新数据 — 如果选中,图表不会自动用新数据样本更新。
- 自动更新数据 — 如果选中,新数据样本将自动添加,并指定 重现时间。此外,您可以定义是否要 使用模型时间 或 使用日历日期。根据此选择,您可以使用 首次更新时间 或 更新日期 属性指定何时开始更新。
- 显示直到... 最新样本(仅适用于 "值" 数据项) — 选中选项的每个数据项将显示的最大最新值数量。
刻度
- 水平刻度 — 在此处选择图表水平轴的刻度类型。选择自动刻度模式(自动),或 固定 刻度,相应的 从 和 到 编辑框中指定最小值和最大值。
- 垂直刻度 — 在此处选择图表垂直轴的刻度类型。选择自动刻度模式(自动),或 固定 刻度,相应的 从 和 到 编辑框中指定最小值和最大值。
外观
- 水平轴标签 — 控件指定水平轴标签相对于图表的位置(下方 或 上方)。如果您不想显示标签,请选择 无。
- 垂直轴标签 — 控件指定垂直轴标签相对于图表的位置(左侧 或 右侧)。如果您不想显示标签,请选择 无。
- 背景颜色 — 图表的背景颜色。
- 边框颜色 — 用于绘制图表边框的颜色。
- 标签颜色 — 控件指定图表标签的颜色。
- 网格颜色 — 控件指定图表网格的颜色。如果不想显示网格,请选择 无填充。
- 绘制线条 — 如果选中,图表上数据项的点将用线条连接。
- 插值 — [如果上面选择了 绘制线条] 定义图表的插值,即两个相邻数据集点之间图表采用什么值。有两个选项:
- 线性 — 两个相邻数据集点用直线段连接
- 步进 — 两个相邻数据集点之间的 y 值与 x 值较小的点相同
位置和大小
- 级别 — 此图表所属的级别。
- X — 图表左上角的 x 坐标。
- Y — 图表左上角的 y 坐标。
- 宽度 — 图表的宽度(以像素为单位)。
- 高度 — 图表的高度(以像素为单位)。
图例
- 显示图例 — 如果选中,将显示图表图例。您可以使用 位置 按钮组控制图例相对于图表的位置。图例区域的大小可以使用 宽度 或 高度 控件定义(取决于图例的 位置)。文本颜色 也可以调整。
图表区域
此部分定义了图表区域的视觉属性:
- X 偏移 — 图表区域相对于为图表及其所有相关元素分配的整个区域的 x 偏移量。
- Y 偏移 — 图表区域相对于为图表及其所有相关元素分配的整个区域的 y 偏移量。
- 宽度 — 图表区域的宽度(以像素为单位)。
- 高度 — 图表区域的高度(以像素为单位)。
- 背景颜色 — 图表区域的背景颜色。
- 边框颜色 — 用于绘制图表区域边框的颜色。
高级
- 可见 — 图表的可见性。当指定的表达式计算结果为 true 时图表可见,否则不可见。
- 复制 — 图表的复制因子。在这里指定将创建图表的副本数量。如果留空此字段,将只创建一个图表。
- 选择更改时 — 用户选择特定数据项时执行的代码。当用户通过点击图表图例中的项或通过函数 selectItem() 程序性地更改选择时,将执行此代码。这里可以使用两个变量:
- int[] selectedIndices — 当前选定的数据项的索引
- boolean programmatically — 定义项目是否是程序性选择的(true),或者不是(false)
- 记录到数据库 — 如果选中,图表在模拟期间收集的数据将保存在模型执行日志 datasets_log 中(
如果模型的数据库属性中启用了日志记录)。
- 显示名称 — 如果选中,图表的名称将显示在演示图表上。
函数
数据项
函数 | 描述 |
---|---|
void addDataSet(DataSet ds) | 向图表添加一个数据集,带有默认标题 "Data set" 和默认视觉效果:royalBlue 颜色,绘制线宽为 1,不绘制点,线性插值。<br>ds — 要添加的数据集 |
void addDataSet(DataSet ds, String title) | 向图表添加一个带有给定标题和默认视觉效果的数据集:royalBlue 颜色,绘制线宽为 1,不绘制点,线性插值。 ds — 要添加的数据集 title — 数据集的标题 |
void addDataSet(DataSet ds, String title, Color color, boolean drawLine, int interpolationType, float lineWidth, int pointStyle) | 向图表添加一个带有指定视觉效果的数据集。<br>ds — 要添加的数据集title — 数据集标题 color — 数据集绘图的颜色 drawLine — 如果为 true,则绘制绘图线 nterpolationType — 两个数据点之间的插值类型:Plot.INTERPOLATION_LINEAR — 线性或 Plot.INTERPOLATION_STEP — 步进插值 lineWidth — 线的宽度(最细为 0) pointStyle — 数据点上绘制的内容:Plot.POINT_SQUARE — 正方形,Plot.POINT_CIRCLE — 圆形,Plot.POINT_TRIANGLE — 三角形,或 Plot.POINT_NONE — 无。 |
void addDataSet(DataSet ds, String title, Color color, boolean drawLine, boolean fillAreaUnderLine, int interpolationType, double lineWidth, int pointStyle) | 向图表添加一个带有指定视觉效果的数据集,包括是否填充线下区域。 ds — 要添加的数据集 title — 数据集标题 color — 数据集绘图的颜色 drawLine — 如果为 true,则绘制绘图线 fillAreaUnderLine — 如果为 true,则填充线下区域 interpolationType — 两个数据点之间的插值类型:Plot.INTERPOLATION_LINEAR — 线性或 Plot.INTERPOLATION_STEP — 步进插值<br>lineWidth — 线的宽度(最细为 0)<br>pointStyle — 数据点上绘制的内容:Plot.POINT_SQUARE — 正方形,Plot.POINT_CIRCLE — 圆形,Plot.POINT_TRIANGLE — 三角形,或 Plot.POINT_NONE — 无。 |
int getCount() | 返回当前图表显示的图表项(数据项或数据集)的数量。 |
ChartItem get(int i) | 返回给定索引的图表项(DataItem, DataSet 等)。 |
String getTitle(int i) | 返回给定索引的图表项(DataItem, DataSet 等)的标题。 |
Color getColor(int i) | 返回给定索引的图表项(DataItem, DataSet)的颜色。 i — 项的索引 |
void setColor(int i, Color c) | 设置给定索引的图表项(DataItem, DataSet)的新颜色。 i — 项的索引 c — 项的新颜色 |
void remove(int i) | 从图表中移除给定索引的项(DataItem, DataSet 等)。 |
int remove(ChartItem ci) | 从图表中移除给定项(DataItem, DataSet)。 |
void removeAll() | 从图表中移除所有项。 |
选择数据项
函数 | 描述 |
---|---|
void selectItem(int itemIndex, boolean selected) | 根据 selected 值选择/取消选择给定索引的图表项。 |
void setSelectedItemIndices(int[] selectedIndices) | 只选择具有给定索引的图表项。 selectedIndices — 要选定的图表项索引数组(其他图表项将被取消选择),可以为 null — 这将清除选择 |
int[] getSelectedItemIndices() | 返回当前图表显示的图表项(数据项或数据集)的选定索引数组。 |
设置图表轴刻度
函数 | 描述 |
---|---|
void setFixedHorizontalScale(double minimum, double maximum) | 设置图表水平轴的固定刻度。 minimum — 图表轴刻度的最小值 maximum — 图表轴刻度的最大值 |
void setFixedVerticalScale(double minimum, double maximum) | 设置图表垂直轴的固定刻度。 minimum — 图表轴刻度的最小值 maximum — 图表轴刻度的最大值 |
手动更新图表数据
函数 | 描述 |
---|---|
void updateData() | 更新图表显示的所有数据项。 |
位置
函数 | 描述 |
---|---|
double getX() | 返回图表的 X 坐标(即其左上角的 X 坐标)。 |
double getY() | 返回图表的 Y 坐标(即其左上角的 Y 坐标)。 |
void setX(double x) | 设置图表的 X 坐标。 x — X 坐标的新值 |
void setY(double y) | 设置图表的 Y 坐标。 y — Y 坐标的新值 |
void setPos(double x, double y) | 设置图表形状的新坐标。 x — x 坐标的新值 y — y 坐标的新值 |
大小
函数 | 描述 |
---|---|
double getWidth() | 返回图表形状的宽度。 |
double getHeight() | 返回图表形状的高度。 |
void setWidth(double w) | 设置图表形状的新宽度。 w — 图表宽度的新值 |
void setHeight(double h) | 设置图表形状的新高度。 h — 图表高度的新值 |
可见性
函数 | 描述 |
---|---|
boolean isVisible() | 检查图表的可见性。如果图表可见,返回 true,否则返回 false。 |
void setVisible(boolean v) | 设置图表的可见性。 v — 可见性:如果为 true,图表设置为可见;如果为 false,不可见。 |
复制图表数据到剪贴板
函数 | 描述 |
---|---|
String copyToClipboard() | 将所有图表数据以文本形式复制到系统剪贴板。返回所有图表数据的文本表示。 |
使用代码记录
1.当有多幅图时,选择其中一幅图的数据集,其他图的选择数据集跟着改变
2.在不知道类型总数的情况下,给不同的类型创建一系列随机颜色附上不同的颜色
int i = 1;
//图像导入数据集
for( MachineGroup mp : machineGroups ) {
Color color = spectrumColor(i%15, 15); // 使用取余的方式,防止超出划分的边界
Chart.InterpolationType interpolationType = Chart.InterpolationType.INTERPOLATION_LINEAR; // 或者 Chart.InterpolationType.STEP,根据你的需求
Chart.PointStyle pointStyle = Chart.PointStyle.POINT_CIRCLE; // 或者其他点样式
plot.addDataSet(mp.ds_满足率, mp.机型, color,true, interpolationType, 0.1, pointStyle);
plot1.addDataSet(mp.ds_利用率, mp.机型, color, true, interpolationType, 0.1, pointStyle);
i++;
}