我有以下AreaSeries
圖表使用OxyPlot
在Xamarin Forms。它有三個系列。添加MarkerStroke顏色在Smooth正確時添加粗線條
- 光滑= TRUE,MarkerStroke =默認情況下,如預期結果
- 光滑= TRUE,MarkerStroke =黃色粗線顯示了該行預期
- 光滑=假,MarkerStroke =黃色,結果
因此,當我使用Smooth = true併爲MarkerStroke定義顏色時,它會添加不需要的粗線。如何解決/解決它?
注意:在線系列,它按預期工作。問題只在區域系列上。
情節模式
public class MyOxyPlotModelData
{
public PlotModel AreaModel { get; set; }
public MyOxyPlotModelData()
{
AreaModel = CreateAreaChart();
}
public PlotModel CreateAreaChart()
{
PlotModel plotModel1 = new PlotModel { Title = "Area" };
var valueAxisX = new LinearAxis
{
Position = AxisPosition.Bottom,
AxislineColor = OxyColors.White,
TicklineColor = OxyColors.White,
TextColor = OxyColors.White,
FontSize = 12,
IsZoomEnabled = false,
IsPanEnabled = false
};
var valueAxisY = new LinearAxis
{
Position = AxisPosition.Left,
//Maximum = 15,
//Minimum = 0,
AxislineColor = OxyColors.White,
TicklineColor = OxyColors.White,
TextColor = OxyColors.White,
FontSize = 12,
IsZoomEnabled = false,
IsPanEnabled = false
};
plotModel1.Axes.Add(valueAxisX);
plotModel1.Axes.Add(valueAxisY);
plotModel1.DefaultColors = new List<OxyColor>
{
OxyColors.Purple,
OxyColors.DeepPink,
OxyColors.Teal
//OxyColor.FromRgb(0x20, 0x4A, 0x87)
};
AreaSeries areaSeries1 = new AreaSeries
{
MarkerType = MarkerType.Circle,
MarkerSize = 2,
//MarkerStroke = OxyColors.White,
StrokeThickness = 1,
Smooth = true
};
areaSeries1.Points.Add(new DataPoint(0, 50));
areaSeries1.Points.Add(new DataPoint(10, 140));
areaSeries1.Points.Add(new DataPoint(20, 80));
AreaSeries areaSeries2 = new AreaSeries
{
MarkerType = MarkerType.Circle,
MarkerSize = 2,
MarkerStroke = OxyColors.Yellow,
StrokeThickness = 1,
Smooth = true
};
areaSeries2.Points.Add(new DataPoint(0, 30));
areaSeries2.Points.Add(new DataPoint(15, 150));
areaSeries2.Points.Add(new DataPoint(20, 20));
AreaSeries areaSeries3 = new AreaSeries
{
MarkerType = MarkerType.Circle,
MarkerSize = 2,
MarkerStroke = OxyColors.Yellow,
StrokeThickness = 1,
Smooth = false
};
areaSeries3.Points.Add(new DataPoint(0, 40));
areaSeries3.Points.Add(new DataPoint(15, 110));
areaSeries3.Points.Add(new DataPoint(20, 55));
plotModel1.Series.Add(areaSeries1);
plotModel1.Series.Add(areaSeries2);
plotModel1.Series.Add(areaSeries3);
return plotModel1;
}
}
應用。 XAML.cs
public App()
{
InitializeComponent();
var vSampleData = new MyOxyPlotModelData();
MainPage = new OxyPlotNewSeries.MainPage { BindingContext = vSampleData };
}
MainPage.xaml中你有
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:OxyPlotNewSeries"
xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms"
x:Class="OxyPlotNewSeries.MainPage">
<AbsoluteLayout>
<oxy:PlotView Model="{Binding AreaModel}" BackgroundColor="#000000"
AbsoluteLayout.LayoutBounds="10,30,.9,.9"
AbsoluteLayout.LayoutFlags="WidthProportional,HeightProportional" />
</AbsoluteLayout>
</ContentPage>
平滑產生很多中間點。當你定義一個標記時,它會在所有這些點上繪製一個標記。粗線只是標記靠在一起。你通過不添加標記來解決它。 –
就像@PalleDue指出的那樣,如果你不需要它,就不要使用它。雖然如果厚度是你的不喜歡,我沒有看到MarkerStrokeThickness屬性設置在任何地方? –
@PalleDue爲什麼它在系列系列中工作正常,而不是在系列系列中?請參閱問題 – Lijo