|
|
|
@ -38,25 +38,25 @@ void SvgRect(double x, double y, double width, double height, string stroke = "b
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
ShowHistogramSvg(const vector<size_t>& 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();
|
|
|
|
|
}
|
|
|
|
|