diff --git a/svg.cpp b/svg.cpp index 7fba8f8..64380e5 100644 --- a/svg.cpp +++ b/svg.cpp @@ -38,25 +38,25 @@ void SvgRect(double x, double y, double width, double height, string stroke = "b void ShowHistogramSvg(const vector& bins) { - double top = 0; - SvgBegin(400, 300); - - size_t MaxCount = 0; - for (auto bin : bins) { - if (MaxCount < bin) { - MaxCount = bin; + double move = 0; + SvgBegin(IMAGE_WIDTH, IMAGE_HEIGHT); + double k = 1; + size_t max_bin = bins[0]; + for (size_t bin : bins) { + if (bin > max_bin) { + max_bin = bin; } } - int k = (IMAGE_WIDTH - TEXT_WIDTH) / MaxCount * BLOCK_WIDTH; + if (max_bin * 10 > IMAGE_HEIGHT) { + k = double(IMAGE_HEIGHT - TEXT_WIDTH) / (max_bin * 10); + } if (k > 1) k = 1; - for (size_t bin : bins) { - bin = bin * k; - const double bin_width = BLOCK_WIDTH * bin; - SvgText(TEXT_LEFT, top + TEXT_BASELINE, to_string(bin)); - SvgRect(TEXT_WIDTH, top, bin_width, BIN_HEIGHT, "red", "#FF69B4"); - top += BIN_HEIGHT; + const double bin_width = BLOCK_WIDTH * bin * k; + SvgText(TEXT_LEFT + move, TEXT_BASELINE, to_string(bin)); + SvgRect(move+13, 3*BLOCK_WIDTH, BIN_HEIGHT, bin_width,"red","#FFD700"); + move += BIN_HEIGHT; } SvgEnd(); }