【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をインストールし、適切に設定する必要があります。