如何在创建PlotView实例plotView = new PlotView后,数据点大小不同 其上绘制数据点的颜色也不同?
时间: 2024-10-22 11:10:56 浏览: 18
在创建PlotView实例plotView = new PlotView后,要实现数据点大小不同并在其上绘制颜色不同的数据点,可以通过自定义数据系列(Series)和设置数据点样式来实现。以下是一个示例:
1. **创建并绑定数据模型**:
首先,创建一个`PlotModel`并将其绑定到`PlotView`的`Model`属性。
```csharp
var plotModel = new PlotModel { Title = "Scatter Plot Example" };
plotView.Model = plotModel;
```
2. **添加数据系列**:
使用`ScatterSeries`来添加散点图数据系列,并设置每个数据点的大小和颜色。
```csharp
var scatterSeries = new ScatterSeries { MarkerType = MarkerType.Circle };
plotModel.Series.Add(scatterSeries);
```
3. **设置数据点**:
通过循环或其他方式生成数据点,并根据条件设置每个数据点的大小和颜色。
```csharp
var random = new Random();
for (int i = 0; i < 10; i++)
{
var x = random.NextDouble() * 100;
var y = random.NextDouble() * 100;
var size = random.Next(5, 20); // 随机大小在5到20之间
var color = OxyColor.FromRgb((byte)random.Next(256), (byte)random.Next(256), (byte)random.Next(256)); // 随机颜色
scatterSeries.Points.Add(new ScatterPoint(x, y) { Size = size, Color = color });
}
```
4. **刷新视图**:
调用`InvalidatePlot`方法来刷新绘图区域,使更改生效。
```csharp
plotView.InvalidatePlot(true);
```
通过以上步骤,可以在`PlotView`中绘制大小和颜色不同的数据点。以下是完整的代码示例:
```csharp
using OxyPlot;
using OxyPlot.Series;
using OxyPlot.WindowsForms;
using System;
using System.Drawing;
using System.Windows.Forms;
public class MainForm : Form
{
private PlotView plotView;
public MainForm()
{
InitializeComponent();
InitializePlot();
}
private void InitializeComponent()
{
this.plotView = new PlotView
{
Dock = DockStyle.Fill
};
this.Controls.Add(this.plotView);
}
private void InitializePlot()
{
var plotModel = new PlotModel { Title = "Scatter Plot Example" };
plotView.Model = plotModel;
var scatterSeries = new ScatterSeries { MarkerType = MarkerType.Circle };
plotModel.Series.Add(scatterSeries);
var random = new Random();
for (int i = 0; i < 10; i++)
{
var x = random.NextDouble() * 100;
var y = random.NextDouble() * 100;
var size = random.Next(5, 20); // 随机大小在5到20之间
var color = OxyColor.FromRgb((byte)random.Next(256), (byte)random.Next(256), (byte)random.Next(256)); // 随机颜色
scatterSeries.Points.Add(new ScatterPoint(x, y) { Size = size, Color = color });
}
plotView.InvalidatePlot(true);
}
}
```
阅读全文