Anylogic的绘图(Plot)使用

绘图扮演着相位图的角色。每个数据集是一组值对 𝑥,𝑦x,y。绘图 显示数据集中的 Y 值与相应的 X 值相对应地绘制在图表上。X 值映射到 X 轴,Y 值映射到 Y 轴。绘图可以同时显示多个数据集。您可以自定义图表的外观,只显示单独的点,或者用线条连接点。

您可以在许多方面使用此图表。例如,通过将 X 和 Y 值设置为移动对象的坐标,您将在图表上得到它们的轨迹。

创建绘图

  1. 从 分析 面板拖动 绘图 元素到图形编辑器。
  2. 在图表的 属性 中的 数据 部分添加并配置数据项。
  3. 首先,选择此数据项的数据来源 -  或 数据集
    • 如果您想显示一个变量(或参数)与另一个变量的绘制,选择  选项,在 X 轴值 中输入第一个变量的名称(您希望将其映射到 X 轴),在 Y 轴值 字段中输入您想映射到 Y 轴的变量名称。此外,您可以在这些字段中输入任何您想要的表达式。表达式将根据定义的重现时间进行评估,计算结果将添加到图表上。
    • 否则,如果您想显示由某个数据集收集的值,选择 数据集 选项,并在下面的 数据集 字段中输入数据集的名称。
  4. 在 标题 编辑框中,输入将作为此数据项标题显示在图表图例中的文本。
  5. 从 点样式 下拉列表中选择标记样式。可选地,使用右侧的控件定义 线宽
  6. 指定用于为此数据项绘制点和/或线的颜色。点击 颜色 控件中的箭头并选择您希望的颜色。
  7. 如果您想用线条连接点,在 外观 部分中选择 绘制线条 复选框并指定下面的控件中的呈现选项。使用 插值 下拉列表设置插值类型(阶梯 或 线性)。

添加数据项

默认情况下,新的绘图已经有一个数据项。如果您想添加另一个,请按照以下步骤操作:

  1. 在图形编辑器或 项目 视图中选择绘图。
  2. 转到 属性 视图的 数据 部分。
  3. 点击 添加 按钮。新的属性部分定义了一个要添加到绘图中的另一个数据项的设置。

移除数据项

  1. 在图形编辑器或 项目 视图中选择绘图。
  2. 转到 属性 视图的 数据 部分。
  3. 选择定义要从此绘图中移除的数据项的部分。
  4. 点击所有部分下面的 移除 按钮。

属性

通用

  • 名称 — 图表的名称。名称用于从代码中识别和访问图表。
  • 忽略 — 如果选中,图表将从模型中排除。
  • 在上层代理上可见 — 如果选中,该图表也将在包含此代理的上层代理上可见。

数据

  • 此按钮打开新的属性部分,允许配置您想要在此图表上可视化的另一个数据项。
  • 标题 — 此数据集的标题,将显示在图表图例中。
  • 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++;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值