【C++】ヒストグラムと累積度数分布の表示方法

【C++】ヒストグラムと累積度数分布の表示方法

ヒストグラムとは?

ヒストグラムは、データの分布を視覚的に表す棒グラフの一種です。データをいくつかの区間(ビン)に分け、それぞれのビンに属するデータの個数を棒の高さとして表します。

C++でヒストグラムを作成する方法

C++を使ってヒストグラムを作成する基本的な方法を紹介します。以下のコードは、整数データのヒストグラムを標準出力に表示するものです。

#include <iostream>
#include <vector>
#include <map>

void displayHistogram(const std::vector& data) {
    std::map frequency;
    for (int num : data) {
        frequency[num]++;
    }
    
    for (const auto& pair : frequency) {
        std::cout << pair.first << " : ";
        for (int i = 0; i < pair.second; ++i) {
            std::cout << "*";
        }
        std::cout << std::endl;
    }
}

int main() {
    std::vector data = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5};
    displayHistogram(data);
    return 0;
}

累積度数分布とは?

累積度数分布(CDF)は、データの各値以下のデータ数を累積的に示したものです。ヒストグラムと併用することで、データの分布をより深く理解できます。

C++で累積度数分布を作成する方法

以下のC++コードは、データの累積度数分布を表示するものです。

#include <iostream>
#include <vector>
#include <map>

void displayCumulativeFrequency(const std::vector& data) {
    std::map frequency;
    for (int num : data) {
        frequency[num]++;
    }
    
    int cumulative = 0;
    for (const auto& pair : frequency) {
        cumulative += pair.second;
        std::cout << pair.first << " : " << cumulative << std::endl;
    }
}

int main() {
    std::vector data = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5};
    displayCumulativeFrequency(data);
    return 0;
}

応用:グラフィカルな表示

C++でヒストグラムや累積度数分布をより視覚的に表現するために、外部ライブラリ(例えばMatplotlib C++)を使用する方法もあります。

以下は、Matplotlib C++を利用してヒストグラムを描画する例です。

#include "matplotlibcpp.h"
#include <vector>

namespace plt = matplotlibcpp;

int main() {
    std::vector data = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5};
    plt::hist(data, 5);
    plt::show();
    return 0;
}

このコードを実行するには、matplotlib-cppをインストールし、適切に設定する必要があります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です