Hello,
Using RadCartesianChart with three LineSeries as below, ItemsSource bound to three members of ObservableCollection<prodnMonthly>. Charts display nicely with initial LinearAxis, but when axes are programmatically changed to LogarithmicAxis, data disappears and no vertical axis values are shown. Horizontal axis values are displayed correctly throughout.
Guidance would be appreciated!
Regards,
Bob
<telerik:RadCartesianChart Grid.Row="2" x:Name="ProdnChart" Margin="10" Background="White"
Visibility="{Binding IsSelectedEntityProductionData, Converter={StaticResource BoolToVisibilityConverter}}">
<telerik:RadCartesianChart.HorizontalAxis >
<telerik:DateTimeContinuousAxis x:Name="ProdnChartHorAxis" LabelFitMode="Rotate" LastLabelVisibility="Clip" LabelFormat="MMM-yy"
Minimum="{Binding ElementName=ProdnTimeBar, Path=SelectionStart}" Maximum="{Binding ElementName=ProdnTimeBar, Path=SelectionEnd}"
MajorStepUnit="Month" />
</telerik:RadCartesianChart.HorizontalAxis>
<!-- Tooltip -->
<telerik:RadCartesianChart.Behaviors>
<telerik:ChartTooltipBehavior Placement="Top" VerticalOffset="0" />
</telerik:RadCartesianChart.Behaviors>
<telerik:RadCartesianChart.TooltipTemplate>
<DataTemplate>
<Border Background="White" BorderBrush="Black" BorderThickness="1" CornerRadius="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Grid.Row="0" Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="0,0,0,1" >
<TextBlock Text="{Binding DataItem.ProductionDate, StringFormat='yyyy MMMMM'}" FontWeight="Black" HorizontalAlignment="Center" Margin="0,3,0,3" />
</Border>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Oil:" Margin="5,3,5,0"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding DataItem.Oil, StringFormat='#,0'}" HorizontalAlignment="Right" Margin="5,3,3,0" />
<TextBlock Grid.Row="1" Grid.Column="2" Text="BBL" Margin="0,3,5,0"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Gas:" Margin="5,0,5,0"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding DataItem.Gas, StringFormat='#,0'}" HorizontalAlignment="Right" Margin="5,0,3,0" />
<TextBlock Grid.Row="2" Grid.Column="2" Text="MCF" Margin="0,0,5,0"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Water:" Margin="5,0,5,3"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding DataItem.Water, StringFormat='#,0'}" HorizontalAlignment="Right" Margin="5,0,3,3" />
<TextBlock Grid.Row="3" Grid.Column="2" Text="BBL" Margin="0,0,5,3"/>
</Grid>
</Border>
</DataTemplate>
</telerik:RadCartesianChart.TooltipTemplate>
<telerik:RadCartesianChart.Grid>
<telerik:CartesianChartGrid MajorLinesVisibility="XY" />
</telerik:RadCartesianChart.Grid>
<telerik:RadCartesianChart.Annotations >
<telerik:CartesianGridLineAnnotation
Axis="{Binding ElementName=ProdnChart, Path=HorizontalAxis}"
Value="01/01/1960" Stroke="Tomato" StrokeThickness="3"
ToolTipService.ToolTip="Well test Jan 1960"/>
</telerik:RadCartesianChart.Annotations>
<telerik:RadCartesianChart.Series >
<!-- Gas -->
<telerik:LineSeries x:Name="GasSeries" Stroke="Red" StrokeThickness="1"
ItemsSource="{Binding prodnMonthlies}" ValueBinding="Gas"
CategoryBinding="ProductionDate"
VerticalAxis="{Binding SelectedVerticalAxisOption.GasAxis}"
>
<telerik:LineSeries.PointTemplate>
<DataTemplate>
<Ellipse Height="4" Width="4" Fill="Red" />
</DataTemplate>
</telerik:LineSeries.PointTemplate>
<telerik:LineSeries.LegendSettings>
<telerik:SeriesLegendSettings Title="Gas" />
</telerik:LineSeries.LegendSettings>
</telerik:LineSeries>
<!-- Oil -->
<telerik:LineSeries x:Name="OilSeries" Stroke="DarkGreen" StrokeThickness="1"
ItemsSource="{Binding prodnMonthlies}" ValueBinding="Oil"
CategoryBinding="ProductionDate"
VerticalAxis="{Binding SelectedVerticalAxisOption.OilAxis}"
>
<telerik:LineSeries.PointTemplate>
<DataTemplate>
<Ellipse Height="4" Width="4" Fill="DarkGreen" />
</DataTemplate>
</telerik:LineSeries.PointTemplate>
<telerik:LineSeries.LegendSettings>
<telerik:SeriesLegendSettings Title="DarkGreen" />
</telerik:LineSeries.LegendSettings>
</telerik:LineSeries>
<!-- Water -->
<telerik:LineSeries x:Name="WaterSeries" Stroke="Blue" StrokeThickness="0.7"
ItemsSource="{Binding prodnMonthlies}" ValueBinding="Water"
CategoryBinding="ProductionDate"
VerticalAxis="{Binding SelectedVerticalAxisOption.WaterAxis}"
>
<telerik:LineSeries.PointTemplate>
<DataTemplate>
<Ellipse Height="3" Width="3" Fill="Blue" />
</DataTemplate>
</telerik:LineSeries.PointTemplate>
<telerik:LineSeries.LegendSettings>
<telerik:SeriesLegendSettings Title="Blue" />
</telerik:LineSeries.LegendSettings>
</telerik:LineSeries>
</telerik:RadCartesianChart.Series>
<!-- Chart Context Menu -->
<telerik:RadContextMenu.ContextMenu>
<telerik:RadContextMenu>
<!-- Vertical Axis -->
<telerik:RadMenuItem Header="Axis">
<telerik:RadMenuItem Header="Linear"
IsCheckable="False" IsChecked="{Binding SelectedVerticalAxisOption.Label, Converter={StaticResource StringEqualityToBoolConverter}, ConverterParameter='Linear'}"
ToolTipService.ToolTip="Click for a linear vertical axis"
Command="{Binding ChartContextMenuAxisCommand}" CommandParameter="Linear"/>
<telerik:RadMenuItem Header="Logarithmic"
IsCheckable="False" IsChecked="{Binding SelectedVerticalAxisOption.Label, Converter={StaticResource StringEqualityToBoolConverter}, ConverterParameter='Logarithmic'}"
ToolTipService.ToolTip="Click for a linear vertical axis"
Command="{Binding ChartContextMenuAxisCommand}" CommandParameter="Logarithmic"/>
</telerik:RadMenuItem>
</telerik:RadContextMenu>
</telerik:RadContextMenu.ContextMenu>
</telerik:RadCartesianChart>
public class prodnMonthly : INotifyPropertyChanged
{
private string _entity;
private DateTime _productionDate;
private int _gas;
private int _oil;
private int _water;
private int _bOE;
private double _percentWater;
private double _ratioGasOil;
private int _monthsInProduction;
private double? _oilDecline;
private double? _gasDecline;
public string Entity
{
get
{
return _entity;
}
set
{
if (value != _entity)
{
_entity = value;
RaisePropertyChanged("Entity");
}
}
}
public DateTime ProductionDate
{
get
{
return _productionDate;
}
set
{
if (value != _productionDate)
{
_productionDate = value;
RaisePropertyChanged("ProductionDate");
}
}
}
public int Gas
{
get
{
return _gas;
}
set
{
if (value != _gas)
{
_gas = value;
RaisePropertyChanged("Gas");
}
}
}
public int Oil
{
get
{
return _oil;
}
set
{
if (value != _oil)
{
_oil = value;
RaisePropertyChanged("Oil");
}
}
}
public int Water
{
get
{
return _water;
}
set
{
if (value != _water)
{
_water = value;
RaisePropertyChanged("Water");
}
}
}
public int BOE
{
get
{
return _bOE;
}
set
{
if (value != _bOE)
{
_bOE = value;
RaisePropertyChanged("BOE");
}
}
}
public double PercentWater
{
get
{
return _percentWater;
}
set
{
if (value != _percentWater)
{
_percentWater = value;
RaisePropertyChanged("PercentWater");
}
}
}
public double RatioGasOil
{
get
{
return _ratioGasOil;
}
set
{
if (value != _ratioGasOil)
{
_ratioGasOil = value;
RaisePropertyChanged("RatioGasOil");
}
}
}
public int MonthsInProduction
{
get
{
return _monthsInProduction;
}
set
{
if (value != _monthsInProduction)
{
_monthsInProduction = value;
RaisePropertyChanged("MonthsInProduction");
}
}
}
public double? OilDecline
{
get
{
return _oilDecline;
}
set
{
if (value != _oilDecline)
{
_oilDecline = value;
RaisePropertyChanged("OilDecline");
}
}
}
public double? GasDecline
{
get
{
return _gasDecline;
}
set
{
if (value != _gasDecline)
{
_gasDecline = value;
RaisePropertyChanged("GasDecline");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string _name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(_name));
}
}
public prodnMonthly(string _entity, DateTime _pdate, int _oil, int _gas, int _water, int _boe,
double _ratioGasOil, double _percentWater, int _monthsInProduction)
{
Entity = _entity;
ProductionDate = _pdate;
Oil = _oil;
Gas = _gas;
Water = _water;
BOE = _boe;
RatioGasOil = _ratioGasOil;
PercentWater = _percentWater;
MonthsInProduction = _monthsInProduction;
OilDecline = null;
GasDecline = null;
}
}