[英]Plot Histogram from vector data in C++
我正在尝试做一个简单的任务。 在 C++ 中绘制直方图,我正在从音频文件中读取数据并将计数值存储在向量中。
class WAVHist {
private:
std::vector<std::map<short, size_t>> counts;
public:
WAVHist(const SndfileHandle& sfh) {
counts.resize(sfh.channels());
}
// Mono channel
WAVHist() {
counts.resize(1);
}
void update(const std::vector<short>& samples) {
size_t n { };
for(auto s : samples)
counts[n++ % counts.size()][s]++;
}
void dump(const size_t channel) const {
for(auto [value, counter] : counts[channel])
std::cout << value << '\t' << counter << '\n';
}
void mid_channel(const std::vector<short>& samples) {
for(auto i = 0; i < samples.size()/2; i++)
counts[0][(samples[2*i] + samples[2*i+1]) / 2]++;
}
dump
function (freq count_value) 中显示了最终的 output。 我如何将其转换为绘制直方图?
像gnuplot
这样的东西。
C++ 标准本身不提供任何用于可视化或图形用户界面的类。 当然,有许多框架和库可用于此。
由于您已经了解 gnuplot,因此您可能对 gnuplot 的 C++ 接口感兴趣。 其他替代方案包括Qt Charts或Boost.Python 。
另请参阅此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.