<-- Home

Mumu Player Portable !!exclusive!! Link

This interface allows gnuplot to be controlled from C++ and is designed to be the lowest hanging fruit. In other words, if you know how gnuplot works it should only take 30 seconds to learn this library. Basically it is just an iostream pipe to gnuplot with some extra functions for pushing data arrays and getting mouse clicks. Data sources include STL containers (eg. vector), Blitz++, and armadillo. You can use nested data types like std::vector<std::vector<std::pair<double, double>>> (as well as even more exotic types). Support for custom data types is possible.

This is a low level interface, and usage involves manually sending commands to gnuplot using the "<<" operator (so you need to know gnuplot syntax). This is in my opinion the easiest way to do it if you are already comfortable with using gnuplot. If you would like a more high level interface check out the gnuplot-cpp library (http://code.google.com/p/gnuplot-cpp).

Download

To retrieve the source code from git:
git clone https://github.com/dstahlke/gnuplot-iostream.git

Documentation

Documentation is available [here] but also you can look at the example programs (starting with "example-misc.cc").

Example 1

Mumu Player Portable !!exclusive!! Link

Mumu Player Portable arrives at an interesting moment in the smartphone-and-PC gaming landscape. As interest in mobile games grows and players demand more flexibility—running titles across devices, preserving performance, and avoiding clutter on their main PC—portable emulators promise a tidy solution: the power of an Android gaming environment you can drop onto a USB stick or external drive and carry between machines. But does Mumu Player Portable deliver a genuinely useful tool for gamers and creators, or is it mostly marketing for convenience that comes with trade-offs? This editorial unpacks the promise, the realities, and what it means for the broader emulator ecosystem.

If you value flexibility and are comfortable troubleshooting occasional host-related issues, a portable emulator is worth trying; if you want consistent, top-tier performance with minimal fuss, a native install or cloud/native port remains the safer choice. Ultimately the value of Mumu Player Portable will be decided by how well it balances convenience against the platform realities that portable software always must confront. Mumu Player Portable

The promise: portability without compromise What attracts users to any "portable" build is straightforward: install once, carry everywhere, run on different Windows machines without administrator-level changes, and leave no trace on host systems. For gamers who frequent LAN parties, use shared desktops, or want a clean separation between home and work machines, a portable emulator is appealing. Mumu Player Portable pitches itself as an Android runtime that preserves user settings, game installs, and controller mappings while staying self-contained on an external drive. That’s compelling in principle: no more reinstalling dozens of apps, reconfiguring controls, or syncing cloud saves just to hop on a game for an hour. Mumu Player Portable arrives at an interesting moment

Final take Mumu Player Portable could be genuinely useful if it tackles the common pitfalls of portable software: host compatibility checks, performance optimization for external media, and strong safeguards for data integrity. For power users, streamers, testers, and those who bounce between machines often, it promises genuine convenience. For casual players, the portability may not outweigh the friction—especially when performance and host restrictions come into play. This editorial unpacks the promise, the realities, and

The broader implication for mobile gaming Portable emulation speaks to a larger trend: players want choice and portability. Whether it’s cloud-streamed mobile games, native PC ports, or emulators, the industry is moving toward letting users run titles where they want. Well-made portable emulators fill a niche: they let users treat Android gaming environments as mobile tools, not tied to one PC. That’s attractive to developers doing cross-device QA, content creators, and power users—less so for casual players who will prefer streaming or native ports.

Example 2

// Demo of sending data via temporary files.  The default is to send data to gnuplot directly
// through stdin.
//
// Compile it with:
//   g++ -o example-tmpfile example-tmpfile.cc -lboost_iostreams -lboost_system -lboost_filesystem

#include <map>
#include <vector>
#include <cmath>

#include "gnuplot-iostream.h"

int main() {
	Gnuplot gp;

	std::vector<std::pair<double, double> > xy_pts_A;
	for(double x=-2; x<2; x+=0.01) {
		double y = x*x*x;
		xy_pts_A.push_back(std::make_pair(x, y));
	}

	std::vector<std::pair<double, double> > xy_pts_B;
	for(double alpha=0; alpha<1; alpha+=1.0/24.0) {
		double theta = alpha*2.0*3.14159;
		xy_pts_B.push_back(std::make_pair(cos(theta), sin(theta)));
	}

	gp << "set xrange [-2:2]\nset yrange [-2:2]\n";
	// Data will be sent via a temporary file.  These are erased when you call
	// gp.clearTmpfiles() or when gp goes out of scope.  If you pass a filename
	// (e.g. "gp.file1d(pts, 'mydata.dat')"), then the named file will be created
	// and won't be deleted (this is useful when creating a script).
	gp << "plot" << gp.file1d(xy_pts_A) << "with lines title 'cubic',"
		<< gp.file1d(xy_pts_B) << "with points title 'circle'" << std::endl;

#ifdef _WIN32
	// For Windows, prompt for a keystroke before the Gnuplot object goes out of scope so that
	// the gnuplot window doesn't get closed.
	std::cout << "Press enter to exit." << std::endl;
	std::cin.get();
#endif
}

<-- Home