From 80f146ba36fc72d35af3b35f85f7ee23e382fbf9 Mon Sep 17 00:00:00 2001 From: "PARZIVAL (BreganIM)" Date: Thu, 8 May 2025 17:30:08 +0300 Subject: [PATCH] =?UTF-8?q?upd:=D0=9A=D0=BE=D0=B4=20=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B0=D1=87=D0=B5=D0=BD=20=D0=B4=D0=BE=20=D0=BC=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0=20=D0=B7=D0=B0=D1=89=D0=B8=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- svg.cpp | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/svg.cpp b/svg.cpp index 8f524b9..a814587 100644 --- a/svg.cpp +++ b/svg.cpp @@ -4,11 +4,11 @@ using namespace std; void svg_begin(double width, double height) { cout << "\n"; - cout << "\n"; + cout << "\n"; } void svg_end() { @@ -33,40 +33,38 @@ void svg_rect(double x, double y, double width, double height, << "' />\n"; } -void show_histogram_svg(const std::vector& bins, double bin_size, double min_val) { +void show_histogram_svg(const vector& bins) { const double IMAGE_WIDTH = 400; const double IMAGE_HEIGHT = 300; const double TEXT_LEFT = 20; const double TEXT_BASELINE = 20; const double TEXT_WIDTH = 50; const double BIN_HEIGHT = 30; - const double VSPACE = BIN_HEIGHT + TEXT_BASELINE * 2 + 5; + const double BLOCK_WIDTH = 10; svg_begin(IMAGE_WIDTH, IMAGE_HEIGHT); size_t max_count = 0; - for (size_t c : bins) - if (c > max_count) - max_count = c; - double max_width = IMAGE_WIDTH - TEXT_WIDTH - 100; - - for (size_t j = 0; j < bins.size(); ++j) { - size_t count = bins[j]; - double y = j * VSPACE; + for (size_t count : bins) { + if (count > max_count) { + max_count = count; + } + } - double width; + double max_width = IMAGE_WIDTH - TEXT_WIDTH; + double top = 0; + for (size_t count : bins) { + double bin_width; if (max_count > 0) { - width = static_cast(count) / max_count * max_width; + bin_width = static_cast(count) / max_count * max_width; } else { - width = 0.0; + bin_width = 0.0; } - svg_text(TEXT_LEFT, y + TEXT_BASELINE, to_string(count)); - svg_rect(TEXT_WIDTH, y, width, BIN_HEIGHT, "blue", "blue"); - double boundary = min_val + bin_size * (j + 1); - svg_text(TEXT_WIDTH,y + BIN_HEIGHT + TEXT_BASELINE,to_string(boundary) - ); + svg_text(TEXT_LEFT, top + TEXT_BASELINE, to_string(count)); + svg_rect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "blue", "blue"); + top += BIN_HEIGHT; } svg_end();