ScottPlot Legend

Legend 快速入门

许多绘图表具有 Label 属性,可以设置该属性,以便它们显示在图例中。

  

Legend.cs

var sig1 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51));
sig1.LegendText = "Sin";

var sig2 = WpfPlot1.Plot.Add.Signal(Generate.Cos(51));
sig2.LegendText = "Cos";

WpfPlot1.Plot.ShowLegend();

WpfPlot1.Refresh();


从右到左 (RTL) 文本支持

启用从右到左 (RTL) 支持可正确地以 RTL 语言呈现文本。

  

Legend.cs

LabelStyle.RTLSupport = true; // enable right-to-left text support

var sig1 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51));
sig1.LegendText = "אמת"; // example right-to-left text

var sig2 = WpfPlot1.Plot.Add.Signal(Generate.Cos(51));
sig2.LegendText = "English"; // example left-to-right text

WpfPlot1.Plot.ShowLegend();

WpfPlot1.Refresh();


手动图例项

图例可以手动构建。

  

Legend.cs

WpfPlot1.Plot.Add.Signal(Generate.Sin(51));
WpfPlot1.Plot.Add.Signal(Generate.Cos(51));
WpfPlot1.Plot.Legend.IsVisible = true;

LegendItem item1 = new()
{
    LineColor = Colors.Magenta,
    MarkerFillColor = Colors.Magenta,
    MarkerLineColor = Colors.Magenta,
    LineWidth = 2,
    LabelText = "Alpha"
};

LegendItem item2 = new()
{
    LineColor = Colors.Green,
    MarkerFillColor = Colors.Green,
    MarkerLineColor = Colors.Green,
    LineWidth = 4,
    LabelText = "Beta"
};

LegendItem[] items = { item1, item2 };
WpfPlot1.Plot.ShowLegend(items);

WpfPlot1.Refresh();


图例自定义

直接访问 Legend 对象以获取高级自定义选项。

  

Legend.cs

var sig1 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51));
sig1.LegendText = "Sin";

var sig2 = WpfPlot1.Plot.Add.Signal(Generate.Cos(51));
sig2.LegendText = "Cos";

WpfPlot1.Plot.Legend.IsVisible = true;
WpfPlot1.Plot.Legend.Alignment = Alignment.UpperCenter;

WpfPlot1.Plot.Legend.OutlineColor = Colors.Navy;
WpfPlot1.Plot.Legend.OutlineWidth = 5;
WpfPlot1.Plot.Legend.BackgroundColor = Colors.LightBlue;

WpfPlot1.Plot.Legend.ShadowColor = Colors.Blue.WithOpacity(.2);
WpfPlot1.Plot.Legend.ShadowOffset = new(10, 10);

WpfPlot1.Plot.Legend.FontSize = 32;
WpfPlot1.Plot.Legend.FontName = Fonts.Serif;

WpfPlot1.Refresh();


图例方向

图例项可以水平排列,而不是垂直排列

  

Legend.cs

var sig1 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51, phase: .2));
var sig2 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51, phase: .4));
var sig3 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51, phase: .6));

sig1.LegendText = "Signal 1";
sig2.LegendText = "Signal 2";
sig3.LegendText = "Signal 3";

WpfPlot1.Plot.ShowLegend(Alignment.UpperLeft, Orientation.Horizontal);

WpfPlot1.Refresh();


图例换行

图例项可能会换行以改善大量项的显示

  

Legend.cs

for (int i = 1; i <= 10; i++)
{
    double[] data = Generate.Sin(51, phase: .02 * i);
    var sig = WpfPlot1.Plot.Add.Signal(data);
    sig.LegendText = $"#{i}";
}

WpfPlot1.Plot.Legend.IsVisible = true;
WpfPlot1.Plot.Legend.Orientation = Orientation.Horizontal;

WpfPlot1.Refresh();


多个图例

可以将多个图例添加到绘图中

  

Legend.cs

for (int i = 1; i <= 5; i++)
{
    double[] data = Generate.Sin(51, phase: .02 * i);
    var sig = WpfPlot1.Plot.Add.Signal(data);
    sig.LegendText = $"Signal #{i}";
    sig.LineWidth = 2;
}

// default legend
var leg1 = WpfPlot1.Plot.ShowLegend();
leg1.Alignment = Alignment.LowerRight;
leg1.Orientation = Orientation.Vertical;

// additional legend
var leg2 = WpfPlot1.Plot.Add.Legend();
leg2.Alignment = Alignment.UpperCenter;
leg2.Orientation = Orientation.Horizontal;

WpfPlot1.Refresh();


情节外的传说

使用接受 Edge 的 ShowLegend() 重载在数据区域之外显示图例。

  

Legend.cs

var sig1 = WpfPlot1.Plot.Add.Signal(Generate.Sin());
var sig2 = WpfPlot1.Plot.Add.Signal(Generate.Cos());

sig1.LegendText = "Sine";
sig2.LegendText = "Cosine";

WpfPlot1.Plot.ShowLegend(Edge.Right);

WpfPlot1.Refresh();


自动图例项自定义字体

在图例中使用 TTF 文件中的自定义字体。

  

Legend.cs

Fonts.AddFontFile("Alumni Sans", Path.Combine(GetFontsBasePath(), @"AlumniSans/AlumniSans-Regular.ttf"), bold: false, italic: false);

var sig1 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51));
sig1.LegendText = "Sin";

var sig2 = WpfPlot1.Plot.Add.Signal(Generate.Cos(51));
sig2.LegendText = "Cos";

WpfPlot1.Plot.Legend.FontName = "Alumni Sans";
WpfPlot1.Plot.Legend.FontSize = 48;
WpfPlot1.Plot.Legend.FontColor = Colors.Red;

WpfPlot1.Plot.ShowLegend();

WpfPlot1.Refresh();


手动图例项自定义字体

在图例中使用 TTF 文件中的自定义字体(手动图例项)。

  

Legend.cs

// Add a font file to use its typeface for fonts with a given name
Fonts.AddFontFile(
    name: "Alumni Sans",
    path: Path.Combine(Paths.FontFolder, @"AlumniSans/AlumniSans-Regular.ttf"));

var sig1 = WpfPlot1.Plot.Add.Signal(Generate.Sin(51));
sig1.LegendText = "Sin";

var sig2 = WpfPlot1.Plot.Add.Signal(Generate.Cos(51));
sig2.LegendText = "Cos";

WpfPlot1.Plot.Legend.ManualItems.Add(new LegendItem()
{
    LabelText = "Custom",
    LabelFontName = "Alumni Sans",
    LabelFontSize = 18,
    LabelFontColor = Colors.Magenta,
    LinePattern = LinePattern.Dotted,
    LineWidth = 2,
    LineColor = Colors.Magenta,
});

WpfPlot1.Refresh();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code_shenbing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值