stacked columns

main
syneffort 1 year ago
parent 0e293c7639
commit 2edc7dc8d5
  1. 27
      LC_Tutorial/Tutorial/BasicPlots/StackedColumnsWindow.xaml
  2. 77
      LC_Tutorial/Tutorial/BasicPlots/StackedColumnsWindow.xaml.cs
  3. 1
      LC_Tutorial/Tutorial/MainWindow.xaml
  4. 6
      LC_Tutorial/Tutorial/MainWindow.xaml.cs

@ -0,0 +1,27 @@
<Window x:Class="Tutorial.BasicPlots.StackedColumnsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Tutorial.BasicPlots"
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
mc:Ignorable="d"
Title="StackedColumnsWindow" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<lvc:CartesianChart Grid.Row="0" Series="{Binding SeriesCollection}" LegendLocation="Bottom">
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Browser" Labels="{Binding Labels}" Separator="{x:Static lvc:DefaultAxes.CleanSeparator}"/>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Usage" LabelFormatter="{Binding Formatter}"/>
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
<Button x:Name="btnAdd" Grid.Row="1" Content="Add" Click="btnAdd_Click"/>
</Grid>
</Window>

@ -0,0 +1,77 @@
using LiveCharts;
using LiveCharts.Wpf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Tutorial.BasicPlots
{
/// <summary>
/// StackedColumnsWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class StackedColumnsWindow : Window
{
private int _index;
public SeriesCollection SeriesCollection { get; set; }
public string[] Labels { get; set; }
public Func<double, string> Formatter { get; set; }
public StackedColumnsWindow()
{
InitializeComponent();
InitInstance();
}
private void InitInstance()
{
SeriesCollection = new SeriesCollection()
{
new StackedColumnSeries()
{
Title = $"index{++_index}",
Values = new ChartValues<double> { 4, 5, 6, 8 },
StackMode = StackMode.Values,
DataLabels = true
},
new StackedColumnSeries()
{
Title = $"index{++_index}",
Values = new ChartValues<double> { 2, 5, 6, 7 },
StackMode = StackMode.Values,
DataLabels = true
}
};
Labels = new string[] { "Chrome", "FireFox", "Opera", "Edge" };
Formatter = value => value + " Mill";
DataContext = this;
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
Random rand = new Random();
SeriesCollection.Add(new StackedColumnSeries()
{
Title = $"index{++_index}",
Values = new ChartValues<double> { (double)rand.Next(0, 10), (double)rand.Next(0, 10), (double)rand.Next(0, 10), },
StackMode = StackMode.Values,
DataLabels = true
});
SeriesCollection[SeriesCollection.Count - 2].Values.Add((double)rand.Next(0, 10));
}
}
}

@ -14,6 +14,7 @@
<StackPanel Grid.Column="0" Orientation="Vertical" Margin="5"> <StackPanel Grid.Column="0" Orientation="Vertical" Margin="5">
<Button x:Name="btnLines" Content="Lines" Margin="3" Click="btnLines_Click"/> <Button x:Name="btnLines" Content="Lines" Margin="3" Click="btnLines_Click"/>
<Button x:Name="btnColumns" Content="Columns" Margin="3" Click="btnColumns_Click"/> <Button x:Name="btnColumns" Content="Columns" Margin="3" Click="btnColumns_Click"/>
<Button x:Name="btnStackedColumns" Content="Stacked Columns" Margin="3" Click="btnStackedColumns_Click"/>
</StackPanel> </StackPanel>
</Grid> </Grid>
</Window> </Window>

@ -37,5 +37,11 @@ namespace Tutorial
ColumnsWindow win = new ColumnsWindow(); ColumnsWindow win = new ColumnsWindow();
win.Show(); win.Show();
} }
private void btnStackedColumns_Click(object sender, RoutedEventArgs e)
{
StackedColumnsWindow win = new StackedColumnsWindow();
win.Show();
}
} }
} }

Loading…
Cancel
Save