Skip to content

Commit 8f14c1e

Browse files
authored
Merge pull request #561 from NorbertGarfield/issue-532
Clamp infinite values in logarithmic coordinate system
2 parents af0b63c + c621f5a commit 8f14c1e

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

plotters/src/chart/builder.rs

+23
Original file line numberDiff line numberDiff line change
@@ -565,4 +565,27 @@ mod test {
565565
chart.caption("This is a test case", ("serif", 10));
566566
assert_eq!(chart.title.as_ref().unwrap().1.font.get_name(), "serif");
567567
}
568+
569+
#[test]
570+
fn test_zero_limit_with_log_scale() {
571+
let drawing_area = create_mocked_drawing_area(640, 480, |_| {});
572+
573+
let mut chart = ChartBuilder::on(&drawing_area)
574+
.build_cartesian_2d(0f32..10f32, (1e-6f32..1f32).log_scale())
575+
.unwrap();
576+
577+
let data = vec![
578+
(2f32, 1e-4f32),
579+
(4f32, 1e-3f32),
580+
(6f32, 1e-2f32),
581+
(8f32, 1e-1f32),
582+
];
583+
584+
chart
585+
.draw_series(
586+
data.iter()
587+
.map(|&(x, y)| Rectangle::new([(x - 0.5, 0.0), (x + 0.5, y)], RED.filled())),
588+
)
589+
.unwrap();
590+
}
568591
}

plotters/src/coord/ranged1d/types/numeric.rs

+8
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ macro_rules! make_numeric_coord {
8787
return limit.1;
8888
}
8989

90+
if logic_length.is_infinite() {
91+
if logic_length.is_sign_positive() {
92+
return limit.1;
93+
} else {
94+
return limit.0;
95+
}
96+
}
97+
9098
if actual_length > 0 {
9199
return limit.0 + (actual_length as f64 * logic_length + 1e-3).floor() as i32;
92100
} else {

0 commit comments

Comments
 (0)