Package: plotplot
PlotplotDrag and drop plotting, data selection, and filtering.Developed by theDeverman lab.Main FeaturesDrag-and-drop to graph"Google Maps style" pan-and-zoom controlsScatter plots, heatmaps, histograms, and rank plotsGroup data into multiple subsetsRefine, rename, and export subsetsLarge data:Millions of rows supportedStreaming of plot tiles for large plotsAutomatic switching to density plots when plotting huge numbers of pointsThousands of columnsPolygon selection of pointsCategorical filteringSequence filteringNative NaN supportUser accounts and sharing sessions (for server deployments)ScreenshotsPolygon selectionDrag and drop to make a plotCreate subsets of data via polygon, string, or categorical selectionFilter on string columnsSupported files.csvfiles that are pivot tables (columns are measurements, rows are values):SequenceBindingTransductionSAQAQAQ0.10.231TTTQQQA5.124.1212AAATAAT0.320.5423orMonthSavingsJanuary250February80March450.h5adfiles also have experimental support.  If you try them, please file any issues you experience.InstallationOn a single computerYou can install Plotplot from pip and run it yourself:pip install plotplot
plotplotConfigrationSeeplotplot.iniandplotplot/plotplot_config.pyfor list of configuration options.Deployment to a serverPlotplot works well on a high-powered server, espeically when colocated with your data.Streams data to the user as needed (avoids large transfers if colocated with data)Generate plots very quicklyOpen large files when lots of RAM is availableA few features are specifically for shared systems:Support for hot-linking from other tools directly into PlotplotShare sessions among usersUser authentication with Google accountsUser whitelistTo deploy on a server, use Docker.Step 1: Clonegit clone git@github.com:vector-engineering/plotplot.gitStep 2: Build docker imagedocker build -f Dockerfile -t plotplot .Note: you can pass--build-arg URL_PREFIX=/my-custom-plotplotif you want to change the URL_PREFIXStep 3: Run docker image# This will run on port 9042
docker run --restart=unless-stopped -p 0.0.0.0:9042:9042 -d plotplotThen navigate to your-server.com:9042 and you should see plotplot.Step 4: Nginx / reverse proxyA reverse proxy like Nginx is well supported.Run with a Docker command like this:docker run --restart=unless-stopped -p 127.0.0.1:9042:9042 -d plotplotExample Nginx configuration:location = /plotplot/ {
		proxy_pass http://localhost:9042/plotplot/index.html;
		proxy_set_header Host $http_host;
		proxy_redirect default;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
		add_header xv-nginx-remote_user $remote_user;

	}

	location /plotplot/ {
		proxy_pass http://localhost:9042/plot/;
		proxy_set_header Host $http_host;
		proxy_redirect default;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
		add_header xv-nginx-remote_user $remote_user;
	}Development setupDevelopment is done with 2 processes:ReactFlaskThis is so you can live-reload the frontend while working.Step 1: Clone repogit clone git@github.com:vector-engineering/plotplot.gitStep 2: Install React dependenciescd frontend
npm installStep 3: Install Python dependenciescd plotplot
pip install -r requirements.txtStep 4: Run frontend and backendcd plotplot
flask run --no-debugger --cert=adhoc# In a new terminal
cd frontend
npm startCreating the Python wheelcd frontend
npm run build
cd ..
poetry buildBuilding custom-plotlyPlotly has a bug that causes heatmaps with repeated values to be very slow.The best way to generate this yourself is to use the Docker image that creates it on build.If you really want to do it yourself:cd plotly.js

# I used node 18.18.0
npm install
npm install regl-scatter2d@2.1.17 # <--- this is the key step
npm run build

# Then copy the dist/plotly[.min].js file into ./custom-plotly.js
# then in this repo
cd ../plotplot
cp -r ../plotly.js/dist/plotly.min.js frontend/custom-plotly.js
npm install ./custom-plotly.js