Browse Source

playing a bit with charts

master
Julio Biason 2 months ago
parent
commit
e99f27ff5b
  1. 79
      chartstest/Cargo.lock
  2. 7
      chartstest/Cargo.toml
  3. 1
      chartstest/README.md
  4. 1712
      chartstest/graph.svg
  5. 185
      chartstest/src/main.rs

79
chartstest/Cargo.lock generated

@ -0,0 +1,79 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
[[package]]
name = "charts"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d1617102454184fed74f5a24e5cc1d8f2a69a2e9b1ba25f869189dc79b2b2e6"
dependencies = [
"format_num",
"svg",
]
[[package]]
name = "chartstest"
version = "0.1.0"
dependencies = [
"charts",
]
[[package]]
name = "format_num"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14ac05eb8d2eb4ed1eeff847911deae077b0b53332465de9d6a26b0ea9961bc8"
dependencies = [
"regex",
]
[[package]]
name = "memchr"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "regex"
version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "svg"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3685c82a045a6af0c488f0550b0f52b4c77d2a52b0ca8aba719f9d268fa96965"

7
chartstest/Cargo.toml

@ -0,0 +1,7 @@
[package]
name = "chartstest"
version = "0.1.0"
edition = "2021"
[dependencies]
charts = "0.3.0"

1
chartstest/README.md

@ -0,0 +1 @@
Testing charts (https://github.com/askanium/rustplotlib)

1712
chartstest/graph.svg

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 88 KiB

185
chartstest/src/main.rs

@ -0,0 +1,185 @@
use charts::{BarLabelPosition, Chart, ScaleBand, ScaleLinear, VerticalBarView};
fn main() {
let width = 2560;
let height = 1440;
let padding_top = 90;
let padding_right = 40;
let padding_bottom = 450;
let padding_left = 60;
let values = [
("channel395_0", 7.94f32),
("meshBlockPipe_0", 0.19),
("3DValve_0", 73.99),
("forwardStepPar_2", 35.22),
("pitzDaily_0", 4.75),
("cavityBox", 18.48),
("rightAngledDuctFlow_0", 6.00),
("BernardCells_0", 3.91),
("shockTube_0", 1.12),
("aerofoilNACA0012_0", 23.97),
("backwardFacingStep", 1.15),
("pollutantPlumePar_0", 14.85),
("KCS_Fn026Par_0", 143.88),
("acousticAnalogyPar_0", 99.13),
("trainTunnelPar_0", 202.25),
("angledDuctPorous_0", 9.52),
("wing", 54.87),
("2DMixer", 6.17),
("mixerVessel2D_1", 1.85),
("meshBlockSphere_0", 0.16),
("twoThrustersPar_0", 59.51),
("singleChannelPump_3", 91.62),
("2DcavityBlay_0", 1.01),
("hotRoom_3", 2.75),
("Channelf4st_p2_0", 89.80),
("2DRotatingBox_0", 15.49),
("2DcavityNielsen_0", 5.67),
("cylindricalDomainWindPar_3", 18.20),
("airFoil2D_0", 4.27),
("channelPorousBafflePressure_0", 2.82),
("2DCylinderPar_1", 12.63),
("fuelSloshing_0", 9.65),
("meshCavityPar_0", 1.28),
("irvineForest_0", 12.50),
("meshMotorBikePar_0", 19.19),
("meshAddLayersToFaceZone_0", 0.26),
("twoBladeMixerPar_0", 47.00),
("meshRelativeMotion_0", 6.90),
("boundaryWallFunctions_2", 0.64),
("2DCylinderPar_2", 7.61),
("pitzDaily_4", 3.99),
("lateralCavity_0", 1.27),
("rightAngledDuct", 54.09),
("channelWithLumpedBCs_0", 2.28),
("interfaceQadd_0", 11.35),
("porousBlockage_0", 2.11),
("pitzDailyCoupled_0", 7.01),
("windAroundBuildingsPar_0", 45.02),
("irvineForest_1", 12.35),
("cylindricalPeriodicSectors_0", 0.59),
("mixerVessel2D_0", 16.89),
("2DcavityBettsBokhari_0", 12.28),
("boundaryLaunderSharma_0", 0.78),
("rotorDisk_0", 39.93),
("meshGapDetectionPar_0", 0.83),
("underHoodCarChannel_0", 70.18),
("hotRoom_0", 6.12),
("resonantSloshing_0", 0.63),
("meshFilterPar_0", 1.84),
("pisoFoamCavity_0", 0.87),
("boundaryPatchSwitch_0", 66.24),
("2DManifold", 32.05),
("meshAirfoilPar_1", 13.19),
("nacaAirfoil_0", 11.31),
("meshPumpPar_0", 18.37),
("leafHeatBalance_0", 11.17),
("simpleCar_0", 4.59),
("hotRoom_2", 2.55),
("porousTubePar_0", 27.20),
("boundaryWallFunctions_1", 0.64),
("meshBlockSphere7ProjectedEdges_0", 0.24),
("injection_0", 49.68),
("ovoidRadiationPar_0", 38.14),
("rotatingHeatedDiscPar_0", 71.12),
("damBreakHydro_0", 1.95),
("cylindricalDomainWindPar_4", 51.92),
("jouleHeatingSolidPar_0", 24.75),
("fallingSphere_0", 85.80),
("porousDamBreak_0", 124.93),
("2DCavityTransient_0", 38.32),
("meshExtrudePipesPar_0", 12.78),
("planarContraction_0", 12.48),
("wing", 2.07),
("rotSector_0", 29.11),
("meshBlockSphere7_0", 0.24),
("shadowingTree_0", 14.20),
("hotMovingCone_0", 18.69),
("windProfilePar_0", 5.48),
("cylinderAdjustFlowUFixPar_1", 9.64),
("meshIglooWithFridges_0", 9.15),
("solidConductionBlock_0", 16.80),
("3DBox", 16.75),
("oneraM6Par_0", 49.84),
("nacaAirfoil_1", 8.89),
("pitzDailyTransient_0", 16.85),
("phaseSettling_0", 17.62),
("meshFlange_0", 7.85),
("sunDirModel_0", 10.29),
("brakeDisk_0", 62.53),
("buildingWithWindowsAndSolarPar_0", 33.42),
("rae2822Par_0", 10.08),
("meshAirfoilPar_2", 10.38),
("cylindricalDomainWindPar_2", 37.49),
("ovoidRadiationPar_1", 34.31),
("annularThermalMixer_0", 44.14),
("meshBox_0", 4.50),
("ovoidRadiationPar_3", 46.54),
("T3A_0", 18.72),
("fallingObject_0", 87.77),
("forwardStepPar_1", 38.35),
("electricHeatingElement_0", 38.05),
("boundaryWallFunctions_0", 1.48),
("rae2822_0", 27.98),
("objectFallingToWater_0", 92.84),
("singleChannelPump_0", 330.78),
("ovoidRadiationPar_2", 33.22),
("turbineSiting_0", 36.40),
("forwardStepPar_0", 28.51),
("cylinderAdjustFlowPFixPar_1", 9.62),
("cylinderAdjustFlowPFixPar_0", 10.63),
("cylinderAdjustFlowUFixPar_0", 10.92),
("cavityCoupledU_0", 0.79),
("ovoidHumidity_1", 45.55),
("singleChannelPump_2", 128.58),
("naca0012", 81.48),
("twoRegionAnisoSolid_0", 0.45),
("meshSnakeRiverCanyon_0", 3.78),
("2DRotatingBox_1", 16.66),
("linearSloshingPar_0", 233.94),
("meshWindTunnelRotationPar_0", 17.15),
("singleChannelPump_1", 100.90),
("backwardFacingStep", 13.66),
("cylindricalDomainWindPar_0", 48.59),
("solidConductionBlock_1", 7.51),
("Ahmed25deg_1", 76.20),
("reconstructWindProfilePar_0", 5.86),
("wingMotion2D_0", 19.89),
("meshAirfoilPar_0", 6.71),
("2DManifold", 1.80),
("2DCylinderPar_0", 13.26),
];
let formatted = values
.iter()
.map(|(name, value)| (format!("{name:>40}"), *value))
.collect::<Vec<_>>();
let x_labels = ScaleBand::new()
.set_domain(formatted.iter().map(|(name, _)| name.to_string()).collect())
.set_range(vec![0, width - padding_left - padding_right]);
let max = values
.iter()
.fold(f32::MIN, |current, incoming| current.max(incoming.1));
let y_labels = ScaleLinear::new()
.set_domain(vec![0f32, max])
.set_range(vec![height - padding_top - padding_bottom, 0]);
let view = VerticalBarView::new()
.set_x_scale(&x_labels)
.set_y_scale(&y_labels)
.load_data(&formatted)
.unwrap();
Chart::new()
.set_width(width)
.set_height(height)
.set_margins(padding_top, padding_right, padding_bottom, padding_left)
.add_view(&view)
.add_axis_bottom(&x_labels)
.add_axis_left(&y_labels)
.set_bottom_axis_tick_label_rotation(-90)
.set_left_axis_tick_label_format(".2s")
.save("graph.svg")
.unwrap();
}
Loading…
Cancel
Save