{"id":372009,"date":"2026-09-27T11:13:47","date_gmt":"2026-09-27T11:13:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sunburst-chart\/"},"modified":"2026-09-27T11:13:26","modified_gmt":"2026-09-27T11:13:26","slug":"easyvizi-sunburst","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/easyvizi-sunburst\/","author":23569624,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"EasyVizi Sunburst","header_author":"EasyVizi","header_description":"Hierarchical data as a sunburst (multi-level pie) chart: a Gutenberg block, a shortcode, and a template function. No external services, no build step, works offline.","assets_banners_color":"37567a","last_updated":"2026-09-27 11:13:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/easyvizi-sunburst\/","header_author_uri":"https:\/\/profiles.wordpress.org\/easyvizi\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"easyvizi","date":"2026-09-27 11:13:26","revision":3715376}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3715380,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3715380,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3715380,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3715380,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"easyvizi-sunburst\/chart":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"easyvizi-sunburst\/chart","title":"EasyVizi Sunburst","category":"widgets","icon":"chart-pie","description":"Show hierarchical data as a multi-level sunburst chart. Click a ring segment to zoom into it.","keywords":["chart","sunburst","pie","hierarchy","graph"],"textdomain":"easyvizi-sunburst","supports":{"html":false,"anchor":true,"className":true,"align":["wide","full"],"multiple":true,"spacing":{"margin":true}},"deprecated":[{"attributes":{},"supports":{"className":true,"align":["wide","full"],"anchor":true}}],"attributes":{"format":{"type":"string","default":"nested"},"data":{"type":"string","default":""},"title":{"type":"string","default":""},"height":{"type":"number","default":560},"maxDepth":{"type":"number","default":0},"colorMode":{"type":"string","default":"branch"},"arcLabels":{"type":"string","default":"off"},"labelMinSize":{"type":"number","default":14},"hub":{"type":"string","default":"hole"},"legendPosition":{"type":"string","default":"below"},"colors":{"type":"string","default":""},"legend":{"type":"boolean","default":true},"values":{"type":"boolean","default":true},"percent":{"type":"boolean","default":true},"interactive":{"type":"boolean","default":true},"recolor":{"type":"boolean","default":true}},"editorScript":"easyvizi-sunburst-editor","style":"easyvizi-sunburst"}},"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3715380,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3715380,"resolution":"2","location":"assets","locale":"","width":1200,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3715380,"resolution":"3","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"Three levels of hierarchy on a page, with the segment labels and the legend.","2":"The same chart zoomed two levels in, with the heading naming the path back up.","3":"The block in the editor: the live preview, and the inspector's layout and appearance controls."}},"plugin_section":[],"plugin_tags":[2510,3956,17072,24000,282957],"plugin_category":[],"plugin_contributors":[282958],"plugin_business_model":[],"class_list":["post-372009","plugin","type-plugin","status-publish","hentry","plugin_tags-chart","plugin_tags-hierarchy","plugin_tags-pie-chart","plugin_tags-sunburst","plugin_tags-svg-chart","plugin_contributors-easyvizi","plugin_committers-easyvizi"],"banners":{"banner":"https:\/\/ps.w.org\/easyvizi-sunburst\/assets\/banner-772x250.png?rev=3715380","banner_2x":"https:\/\/ps.w.org\/easyvizi-sunburst\/assets\/banner-1544x500.png?rev=3715380","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/easyvizi-sunburst\/assets\/icon-128x128.png?rev=3715380","icon_2x":"https:\/\/ps.w.org\/easyvizi-sunburst\/assets\/icon-256x256.png?rev=3715380","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/easyvizi-sunburst\/assets\/screenshot-1.png?rev=3715380","caption":"Three levels of hierarchy on a page, with the segment labels and the legend."},{"src":"https:\/\/ps.w.org\/easyvizi-sunburst\/assets\/screenshot-2.png?rev=3715380","caption":"The same chart zoomed two levels in, with the heading naming the path back up."},{"src":"https:\/\/ps.w.org\/easyvizi-sunburst\/assets\/screenshot-3.png?rev=3715380","caption":"The block in the editor: the live preview, and the inspector's layout and appearance controls."}],"raw_content":"<!--section=description-->\n<p>EasyVizi Sunburst turns hierarchical data - categories, sub-categories and values - into a multi-level pie chart where every ring is one level of the hierarchy. Each segment is sized by its share of its parent, so the outermost ring shows the finest breakdown.<\/p>\n\n<p><strong>Three ways to add a chart<\/strong><\/p>\n\n<ol>\n<li><strong>Block<\/strong> - search for \"EasyVizi Sunburst\" in the block inserter. The sidebar gives you a live preview while you type, plus controls for height, number of rings, colors, legend and zoom. Paste JSON, or import a CSV straight from the sidebar.<\/li>\n<li><strong>Shortcode<\/strong> - <code>[easyvizi_sunburst title=\"Revenue\" height=\"420\"] ...JSON... [\/easyvizi_sunburst]<\/code>, or point it at a JSON file with <code>src=\"https:\/\/example.com\/data.json\"<\/code>. Settings \u2192 EasyVizi Sunburst has a builder that turns pasted JSON or CSV into a ready-to-paste shortcode (and the matching PHP call).<\/li>\n<li><strong>Template function<\/strong> - <code>echo easyvizi_sunburst( $data, array( 'title' =&gt; 'Revenue' ) );<\/code> in any theme file.<\/li>\n<\/ol>\n\n<p><strong>Two data formats<\/strong><\/p>\n\n<p>A nested tree:<\/p>\n\n<pre><code>`\n<\/code><\/pre>\n\n<p>[\n  { \"name\": \"Acquisition\", \"children\": [\n      { \"name\": \"Search\", \"value\": 4100 },\n      { \"name\": \"Social\", \"value\": 1750 }\n  ] },\n  { \"name\": \"Revenue\", \"value\": 5200 }\n]\n    `<\/p>\n\n<p>Or a flat list of rows, which is easier to produce from a spreadsheet. Leave <code>parent<\/code> empty for a top level row and give parent rows a value of <code>0<\/code> so their children are added up:<\/p>\n\n<pre><code>`\n<\/code><\/pre>\n\n<p>[\n  { \"id\": \"search\", \"parent\": \"\", \"label\": \"Search\", \"value\": 0 },\n  { \"id\": \"search-organic\", \"parent\": \"search\", \"label\": \"Organic\", \"value\": 4100 },\n  { \"id\": \"search-paid\", \"parent\": \"search\", \"label\": \"Paid\", \"value\": 2300 }\n]\n    `<\/p>\n\n<p>A CSV export works too: import it in the block sidebar, or paste it into the builder on the settings screen. The first row names the columns - <code>id<\/code>, <code>parent<\/code>, <code>label<\/code>, <code>value<\/code> - in any order and with the usual aliases (<code>key<\/code>, <code>name<\/code>, <code>size<\/code>). Parent rows take a value of <code>0<\/code> so their children are added up.<\/p>\n\n<p><strong>Highlights<\/strong><\/p>\n\n<ul>\n<li>Interactive: click a segment to zoom into it, click the center or a breadcrumb to zoom back out. Every segment is focusable and activates with Enter or Space.<\/li>\n<li>Labels: write each segment's name inside it, curved along the ring or in a straight line, or let the chart choose one style for the whole thing. A name that cannot reach the minimum size on its segment is left out rather than squeezed, and the minimum is a setting (14 pixels by default).<\/li>\n<li>Size: 560 pixels square by default, up to 2000, and everything scales with it.<\/li>\n<li>Center: an open hole, a solid circle standing for the whole chart, or a circle divided by the first level, all exactly one ring wide.<\/li>\n<li>Legend: below the chart, or beside it on either side.<\/li>\n<li>Colors: one hue per branch (shaded by ring), or a single hue shaded by ring. Bring your own hex palette with the <code>colors<\/code> attribute.<\/li>\n<li>Accessible: an off-screen table with every leaf value and its full path is rendered for screen readers, and the chart scales with the theme's font size and container.<\/li>\n<li>Private by default: the SVG is drawn in the browser from data already on the page. No requests to third-party chart services, no tracking, no cookies.<\/li>\n<li>Translators can start from the bundled <code>languages\/easyvizi-sunburst.pot<\/code>.<\/li>\n<\/ul>\n\n<p>The plugin was renamed from \"Sunburst Chart\" to EasyVizi Sunburst; <code>[sunburst_chart]<\/code> and older saved block markup still work.<\/p>\n\n<p><strong>Shortcode attributes<\/strong><\/p>\n\n<p>There are sixteen, covering size, rings, labels, the center, the legend and your own hex palette. The complete list, with values and defaults, is in <code>docs\/SHORTCODE.md<\/code>.<\/p>\n\n<p>The five you are most likely to reach for:<\/p>\n\n<ul>\n<li><code>title<\/code> - caption above the chart.<\/li>\n<li><code>height<\/code> - pixels, 120 to 2000, default 560. The chart is square, so the column caps the width.<\/li>\n<li><code>arc_labels<\/code> - <code>off<\/code> (default), <code>auto<\/code>, <code>curved<\/code>, <code>radial<\/code>, <code>tangential<\/code> or <code>horizontal<\/code>.<\/li>\n<li><code>colors<\/code> - comma separated hex colors, e.g. <code>colors=\"#4e79a7,#f28e2b\"<\/code>. Hex only.<\/li>\n<li><code>src<\/code> - URL returning JSON, used instead of inline data. Cached for one hour.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>easyvizi-sunburst<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip through Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li>Open Settings \u2192 EasyVizi Sunburst to set the defaults and see examples.<\/li>\n<li>Edit a post or page, insert the \"EasyVizi Sunburst\" block, and paste your JSON.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20call%20an%20external%20service%3F\"><h3>Does it call an external service?<\/h3><\/dt>\n<dd><p>No. The chart is drawn in the visitor's browser from data that is already in the page. The only outbound request the plugin can make is when you use the <code>src<\/code> attribute to load JSON from your own URL.<\/p><\/dd>\n<dt id=\"how%20large%20can%20the%20data%20be%3F\"><h3>How large can the data be?<\/h3><\/dt>\n<dd><p>The renderer is comfortable with a few thousand segments. The PHP parser caps a chart at 20000 nodes and 16 levels, and silently ignores anything deeper. If a chart feels slow, lower the number of rings with <code>max_depth<\/code>.<\/p><\/dd>\n<dt id=\"what%20happens%20without%20javascript%3F\"><h3>What happens without JavaScript?<\/h3><\/dt>\n<dd><p>The chart's figures are always rendered into an off-screen table, which is announced to screen readers and visible if a visitor's browser blocks scripts. The chart itself needs JavaScript.<\/p><\/dd>\n<dt id=\"can%20i%20use%20my%20own%20colors%3F\"><h3>Can I use my own colors?<\/h3><\/dt>\n<dd><p>Yes - set the <code>colors<\/code> attribute, or the palette setting, to a comma separated list of six digit hex values, for example <code>colors=\"#4e79a7,#f28e2b\"<\/code>. Values are validated server side and fall back to the built-in palette when nothing usable is supplied.<\/p>\n\n<p>Only hex is read. An entry the renderer cannot parse is passed over, and that branch keeps an automatically chosen hue, so a color name or an <code>rgb()<\/code> value changes the chart without ever being painted.<\/p><\/dd>\n<dt id=\"can%20i%20import%20a%20spreadsheet%3F\"><h3>Can I import a spreadsheet?<\/h3><\/dt>\n<dd><p>Yes, as CSV. Export your sheet with columns named <code>id<\/code>, <code>parent<\/code>, <code>label<\/code> and <code>value<\/code>, then use <strong>Import CSV<\/strong> in the block sidebar or paste it into the shortcode builder on the settings screen. Leave <code>parent<\/code> empty for a top level row and give parent rows a value of <code>0<\/code> so their children are added up.<\/p><\/dd>\n<dt id=\"how%20do%20i%20put%20the%20names%20inside%20the%20chart%3F\"><h3>How do I put the names inside the chart?<\/h3><\/dt>\n<dd><p>Set <code>arc_labels<\/code> (the \"Labels on the segments\" setting, or the block's Appearance panel): <code>auto<\/code> picks one style for the whole chart, and <code>curved<\/code>, <code>radial<\/code>, <code>tangential<\/code> or <code>horizontal<\/code> force one.<\/p>\n\n<p>A name that cannot reach the minimum size is left blank rather than squeezed - hovering the segment still shows it, and the off-screen table always carries every figure. A percentage goes on its own line under the name, which is what lets a long name fit a narrow segment. The minimum is <code>label_min_size<\/code>, 14 pixels by default.<\/p><\/dd>\n<dt id=\"how%20big%20should%20the%20chart%20be%3F\"><h3>How big should the chart be?<\/h3><\/dt>\n<dd><p>height sets it - the chart is square, so it is the width too, and the column caps the width. The default is 560 pixels.<\/p>\n\n<p>The whole chart scales with it, so a larger chart makes every label larger and lets more of them fit at the same minimum size.<\/p><\/dd>\n<dt id=\"what%20can%20go%20in%20the%20middle%3F\"><h3>What can go in the middle?<\/h3><\/dt>\n<dd><p>The center is always exactly one ring wide. <code>hub=\"hole\"<\/code> leaves it open, <code>hub=\"disc\"<\/code> fills it with a circle standing for the whole chart (with the total written on it, unless values are off), and <code>hub=\"split\"<\/code> divides that circle by the first level of the hierarchy, so the rings start one level in.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20it%3F\"><h3>Can I translate it?<\/h3><\/dt>\n<dd><p>Yes. The plugin text domain is <code>easyvizi-sunburst<\/code> and <code>languages\/easyvizi-sunburst.pot<\/code> lists every string. Drop a <code>.po<\/code>\/<code>.mo<\/code> pair into <code>languages\/<\/code> or into <code>wp-content\/languages\/plugins\/<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20rtl%20languages%20and%20dark%20themes%3F\"><h3>Does it work with RTL languages and dark themes?<\/h3><\/dt>\n<dd><p>Yes. The layout is driven by CSS custom properties and logical properties, and the labels use the theme's text color.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed the plugin to EasyVizi Sunburst (display name and slug <code>easyvizi-sunburst<\/code>), to avoid confusion with an existing block of the same name. <code>[sunburst_chart]<\/code> and older saved block markup still work.<\/li>\n<li>Moved the developer notes out of the plugin root, and added <code>docs\/SHORTCODE.md<\/code> with the full list of shortcode attributes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: sunburst block, <code>[easyvizi_sunburst]<\/code> shortcode, <code>easyvizi_sunburst()<\/code> template function, settings page, nested and flat-row data, branch and level color modes, zoom with breadcrumbs, keyboard support and an accessible data table.<\/li>\n<li>CSV import in the block sidebar, and a shortcode builder on the settings screen that turns pasted JSON or CSV into a shortcode or a PHP call.<\/li>\n<li>Segment labels inside the chart with a configurable minimum size, and a center exactly one ring wide.<\/li>\n<li>A <code>languages\/<\/code> folder with a <code>.pot<\/code>, so translations can start.<\/li>\n<li>Renamed from Sunburst Chart to EasyVizi Sunburst; <code>[sunburst_chart]<\/code> and older saved block markup still work.<\/li>\n<\/ul>","raw_excerpt":"Hierarchical data as a sunburst (multi-level pie) chart: a block, a shortcode and a template function. No build step, works offline.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/372009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=372009"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/easyvizi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=372009"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=372009"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=372009"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=372009"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=372009"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=372009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}