{"id":81,"date":"2026-07-23T22:00:00","date_gmt":"2026-07-23T13:00:00","guid":{"rendered":"https:\/\/sr-works.net\/blog-en\/?p=81"},"modified":"2026-07-22T23:21:44","modified_gmt":"2026-07-22T14:21:44","slug":"weve-released-cubeplot-turn-your-csv-into-a-3d-scatter-plot-you-can-spin","status":"publish","type":"post","link":"https:\/\/sr-works.net\/blog-en\/weve-released-cubeplot-turn-your-csv-into-a-3d-scatter-plot-you-can-spin\/","title":{"rendered":"We&#8217;ve released CubePlot \u2014 turn your CSV into a 3D scatter plot you can spin"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>This article was originally written in Japanese and translated into English with AI assistance. Please note that some expressions may carry nuances from the original Japanese.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\ud83c\uddef\ud83c\uddf5 <a href=\"https:\/\/note.com\/sr_works\/n\/ncf29a8cfb96e\">\u65e5\u672c\u8a9e\u7248\u306f\u3053\u3061\u3089 \/ Japanese version<\/a><\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Hello \u2014 this is Satoshi Kanazawa, of Soul Resonant Works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;ve just released a small tool called <strong>CubePlot<\/strong>. This post is that announcement. Think of it less as a development diary and more as a simple &#8220;it&#8217;s out \u2014 here&#8217;s what it is.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What it does, in one line: <strong>load a CSV you already have, and it becomes a 3D scatter plot you can rotate and zoom.<\/strong> That&#8217;s all it does. But building it reminded me how much I&#8217;d actually wanted exactly that &#8220;all.&#8221;<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"CubePlot Movie output function 1\" width=\"500\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/jff0u7Cwi18?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">No install, no sign-up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CubePlot runs from <strong>a single HTML file<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No installation, no account. Download the HTML file, open it in your browser, and it starts \u2014 that&#8217;s it. One file to send, one file to receive. It even works offline, with no network connection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You load a CSV and pick three axes. On top of X\/Y\/Z, you can attach labels to points, look at a cross-section with the slice view, switch between presets, and export what you see as PNG or CSV. It&#8217;s aimed at the &#8220;just spin a 3D scatter and take a look&#8221; use case that&#8217;s a little awkward to do in Excel or a BI tool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can also assign fields to the color and size of each point, so with three axes plus color, size, and label you can take in even more at once. (This color- and size-based multidimensional mapping is a feature of the Student and commercial-license versions; the free version gives you 3D display on three axes plus labels.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Designed so your data never leaves<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Generating a beautiful chart is something generative AI is genuinely good at these days. The catch is that <strong>many generative-AI services tend to send your data to the cloud<\/strong> to do it. When you&#8217;re handling data that must not leave your hands, that&#8217;s a problem \u2014 one I kept running into myself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the point I most want to get across about CubePlot.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The application itself sends no data anywhere.<\/strong> It uses a browser mechanism (CSP) to block network communication outright, so the CSV you load is never uploaded to a third-party server. Data with confidential or personal information stays entirely inside your own browser.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So that you can confirm &#8220;is it really not sending anything out,&#8221; we&#8217;ve also published a <strong>verification page (verify.html)<\/strong>. I didn&#8217;t want to just say &#8220;it&#8217;s safe&#8221; \u2014 I wanted it to be something you can check.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The design philosophy is simply different from cloud-upload-and-visualize tools, and I&#8217;d be glad if that one point comes across.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"566\" src=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_products_en-1024x566.png\" alt=\"\" class=\"wp-image-84\" srcset=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_products_en-1024x566.png 1024w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_products_en-300x166.png 300w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_products_en-768x425.png 768w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_products_en-1536x849.png 1536w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_products_en-2048x1132.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Product comparison, colored by maker<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">It looks completely different depending on your data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CubePlot is a visualization tool, so what you bring changes its face entirely.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Distribution of measurement data. Terrain elevation. Star maps and the solar system in astronomy. Building heights across a city. I tried a few myself, and it&#8217;s hard to believe it&#8217;s the same tool \u2014 what you see changes that much. When I loaded Mt. Fuji&#8217;s elevation data (16,384 points) and spun it, an honest &#8220;whoa&#8221; came out of me.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_stars_en_3d-Better-1024x588.png\" alt=\"\" class=\"wp-image-91\" srcset=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_stars_en_3d-Better-1024x588.png 1024w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_stars_en_3d-Better-300x172.png 300w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_stars_en_3d-Better-768x441.png 768w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_stars_en_3d-Better-1536x882.png 1536w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_stars_en_3d-Better-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">A 3D map of nearby stars centered on the Sun. Summer-sky stars (Vega, Altair) and winter-sky stars (Sirius, Procyon) fall on opposite sides of the Sun \u2014 which is why we see them in opposite seasons.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-White-1024x588.png\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-White-1024x588.png 1024w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-White-300x172.png 300w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-White-768x441.png 768w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-White-1536x882.png 1536w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-White-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Mt. Fuji terrain, colored by elevation(Light Theme)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-Black-1024x588.png\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-Black-1024x588.png 1024w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-Black-300x172.png 300w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-Black-768x441.png 768w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-Black-1536x882.png 1536w, https:\/\/sr-works.net\/blog-en\/wp-content\/uploads\/2026\/07\/sample_fuji_en_3d-Black-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Mt. Fuji terrain, colored by elevation(Dark Theme)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Three ways to get it<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CubePlot comes in three forms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Free.<\/strong> 3D display on X\/Y\/Z axes, labels, slicing, and PNG\/CSV export \u2014 free, with no time limit (the screen and exported PNGs carry a watermark and QR code). It&#8217;s the version for trying it at zero cost. Note that color- and size-based multidimensional mapping, rotating-video (MP4) export, and watermark-free output are features of the Student and commercial-license versions below.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Commercial license (USD $39 + tax where applicable).<\/strong> The watermark-free commercial version. It adds color- and size-based multidimensional mapping and rotating-video (MP4) export. Sold as a download on <a href=\"https:\/\/soulworks8.gumroad.com\/l\/pzcij\">Gumroad<\/a>. The zip includes two builds at the same price \u2014 a &#8220;no local server&#8221; build (default) and a &#8220;_with-server&#8221; build (optional). The default no-server build is all almost everyone needs. One license covers up to five people in the same organization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Student.<\/strong> Free, by application. Email student@sr-works.net and we&#8217;ll take it from there. If you want to use it for learning, I really want to get it into your hands.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">From a small personal itch<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It began with my own small problem: <strong>&#8220;I want to compare more than two parameters at once.&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Think of something like a comparison matrix. With two parameters, a table or chart makes it easy. But once the things you want to compare grow to three or four, it suddenly becomes hard to lay out, and I never found a representation that felt right. Capable tools for multidimensional data do exist \u2014 high-end paid software, or well-known libraries that require coding \u2014 but for an occasional personal need, the money and the learning curve were honestly hard to justify. In the end I never reached for any of them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tired of laying out sheet after sheet of 2D charts to compare, I thought: what if I just put all of it into space at once? That&#8217;s where CubePlot came from.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Twenty-five years around theater, zero programming background \u2014 from that starting point, this is one more milestone on a path I&#8217;ve been shaping through dialogue with AI. I think of it as a continuation of &#8220;turning my own problems into something real,&#8221; which I wrote about in my first post, &#8220;<a href=\"https:\/\/sr-works.net\/blog-en\/why-i-started-soul-resonant-works-25-years-in-theater-zero-programming-experience\/\">Why I Started Soul Resonant Works<\/a>.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To be honest, at Soul Resonant Works I&#8217;ve been developing several tools in parallel, and some were started earlier. As it turned out, the first one finished and out the door was CubePlot. <strong>It&#8217;s the first product Soul Resonant Works is bringing to market.<\/strong> I&#8217;ll write more about that story on the development blog going forward.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whether it turns out useful depends on your data. First, I&#8217;d be glad if you&#8217;d try the free version and spin one of your own CSVs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Get it \/ Contact<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Product page (try the free version \/ how to buy): https:\/\/sr-works.net\/en\/cubeplot\/<\/li>\n\n\n\n<li>Commercial license (USD $39 + tax where applicable): https:\/\/soulworks8.gumroad.com\/l\/pzcij<\/li>\n\n\n\n<li>Student version: student@sr-works.net<\/li>\n\n\n\n<li>Other inquiries: inquiry@sr-works.net (general) \/ biz@sr-works.net (business)<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">About Soul Resonant Works<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Soul Resonant Works is a solo studio building local-first (everything-stays-on-your-machine) tools. Starting from zero programming background, I develop through dialogue with AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83c\udf10 Soul Resonant Works:<br>\u2192 <a href=\"https:\/\/sr-works.net\/en\/index.html\">https:\/\/sr-works.net\/en\/index.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udcdd This blog publishes the entire development process as a serialized journal.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>If you found this article useful, please share it.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article was originally written in Japanese and translated into English with AI assistance. Please note that some expressions may carry nuances from the original Japanese. \ud83c\uddef\ud83c\uddf5 \u65e5\u672c\u8a9e\u7248\u306f\u3053\u3061\u3089 \/ Japanese version Hello \u2014 this is Satoshi Kanazawa, of Soul Resonant Works. We&#8217;ve just released a small tool called CubePlot. This post is that announcement. Think [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[7,9,4,8,5,6],"class_list":["post-81","post","type-post","status-publish","format-standard","hentry","category-ai-development-journal","tag-3d","tag-csv","tag-cubeplot","tag-data-privacy","tag-data-visualization","tag-local-first"],"_links":{"self":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":2,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts\/81\/revisions"}],"predecessor-version":[{"id":92,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/posts\/81\/revisions\/92"}],"wp:attachment":[{"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/media?parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/categories?post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sr-works.net\/blog-en\/wp-json\/wp\/v2\/tags?post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}