Justin-ZS commented on issue #21239:
URL: https://github.com/apache/echarts/issues/21239#issuecomment-3283863206

   
[Workaround](https://echarts.apache.org/examples/zh/editor.html?c=line-marker&reset=1&edit=1&renderer=svg&code=PYBwLglsB2AEC8sDeAoW7YCIDGwA2wATpgFywDaaG1mAxACwDMA7AJwDCAopgDRXXo6rVgCEAHADEAjL34C6EgIIARES1kCMC9mIBsABgBMGzVloSlzemJOa6zQyICsnEbfm1mY9ss7L3NLSK7KyKnMZ8pmZK7Iy6EgFa5srMEqmYcgC6kVoAnooAHhAAzqTIcjRguSAApmWYAG4AhngArnU5miDAxRCQMGQA5Hg1AGZgg52wAL5TACZNYE0AWsDAALZk5KiaVbVDxXgQczWEkxWw6xDQAGot7QDKIE3QZFJT09lymAWFJWXbC6CPZ1Mg4RY1ADmRFyiUE3V6_Wg9QARsAwGANnDYE0isUADJNFE1PBkHZRS5NQiQ65kfRTTQACxqEEhjLAZEY9KBGCO0BqAAkWWyObAuQyBAB3Y5gRlkMTcimwYANU6jAiSoZgQitaDYCHnJXXMCnZqk2CKimM441ADyqsIeCaIDIoxaxRqEvQ0zkszk5LsIPq-pN0MIsK9WARfSgyLBaIxWMjxyGz0INWgE0juJKABUINgANZknnoEbQSGyzmWqLG00tOmR9DXXonMja9qRv1RYCjUYe0Xink5glEkklpXrKk014WpuwZms9nV-d8wXC5dimumFVqjVanV6g3z0ZEKcY05kAAUDR4sAgAEoEAA-WBX8hOO9iTIAOmu2DaE5iivR9YAAflgAADJAwAKMAAB8ABIkAaaZpiQXt-xqBDpkg2AyGg2CEOQ1DcIfedsFaYpMXWO42hqYotneRgeE_XQeDEHhWB4KR6Skd4pEML4jUzetzW3JkbXtU4nRdWA3TwD150IAs5XKJV0EwgcJw09BFxFRtSylGU1IVedqBRJoi0hQhgF1OZ2HwIg
 
DxeYo0wzLMjO9ecfSibtTAWJYti8-RADdNQBIn0Abx9sSiTAIuiu8QpoeKYtMTBAH2HQAlRISpKtBS8ywqi1K7CyhLYFywRAHtgwBBlRy3SaBqur6sEQBwzUAHz1AApXarisKprmswRqMl0zJfSmAN5CDMEQyhGFsUwaMkVRdEaOxEd8yLHSoinalaTnIzKOojY6PaRiKHpMU73oHh2OYLieL4qRhIpctKzUgx5xbG12x1T0eX8zQtOwsh3p5QKmmC5rBB6mheHKyGsGhrREahgqYdRpHEvhzBkYR9GUYq3GCexkKRuof7YCewQPRUhiAR5cbYsmrBLOIArMAzXATjKBmNJ-On4eoKQCcp-rMFhCGBfQQxhYK8nYugJp1lBLBAABUwBcjIAfRNaiAKG0xyZFzAbOObmeUwTEQDKTizZGcYrcjTAVJFe2zYTFayHoCStFwTMmmuQliTwMoOxqUbvkxfBIEtzaJqdyFTnqEc5p90ZrmVkOHZHAAFYA62IGPGeqZXMGgGA6j-h3ikZYBJWDn6w5oFEdSr03GbWPA0QKfnefTbAwD1zRSYwcnzfbzvW7Squa7KBSPQbrQbOda1sABQ2wYHbvNB5uxijswhsHXJoTnz-T3V-3TMDmCAlegXoYFKCXmu30WFaV-pADFVarADAlPqBfNov6hECvgrIOeN5AAC8y65gAWCWytcCZyw0s_C-r9i6f0ALAqgAHzxxpUGBWAgHXBaDgrQkD-TQNqPUOBA96qIKVMg3mqD6jqy1gxMAuswE0FPIQc83NaGiyZpgdUwBFjEMEKQmo5Di5K21AWahulfIaRFrFXerR97K0oPDDRkssD5QJjQKQP5mCFkhIASO1ACEBhFQACAxSFYAAWicPoQAgTqAEQGURsBeL6EEmIGWBMtGSzikVDhWhWD6H0JCQAcf6AAJfKQEU3H8XoLoQw9AfGaL0XlQJaTBAhLCeEwAerGAGPAxQABqQwsSgnoHiUk6W8
 
MlEaT8X_UqbjMCAC65QALJqABss2AgBPJ0AOV-zBAAkcm4wwhgnD0EMPoFJkN6lY10dorA2TISAFG0wAn-oxPCnEowUhGDJJqWA6ZkMAm_yxgswA2k6AHgLQAMk5SEAK3WZTMnuP0AqBUkzmr7P6o08pWBmAOPWHgcJgBneUAJRKgAiv0ypYwA8Z6ABNYwAeOmAAPnVxnypBMDiBM3Zvj7kDVqk0yqtj2mAD83QA9kEmMANXaJzAAjeYADjkhn0CcMwAwLz6pvNFoNT5A1bGAE15QAg3KAHxXQADYqADWfQAq46AFyvOJhgFT0B2ZDWpSomUX3al1JpgBcWMAE1yoVABvLoAS31ABLboAB5tAC_aoAUYjAAHpoARqC4lSF0PQBwDLdJyt5rM7RmAFl5MKUUtZcSnDbIcbaupGKWX-tsYAJONABL1uEwAORmAFztDZrAxA2pqSTNmkBoC5HYIyKkYBlCLCaBPfquA2jrDjOpJ1qcSRzAfhQe51B6H-MgGAEY9RABleoAecS3GxWkU0SR9QACynBcwACUACS7A21pWZEfU4EgzwiLINAVoeA8CfNiiUbtWcBR13aFW4e9yZWizBpvOZlbD2mBrYe82fQG1gmYdrNhoCt1Kn_hQsE0iVIryXbzIgrJrj5nrcXa9rD2H3opJgFoEAmgVrnQu99D7RjrDABrY4XdDLHpg3MLtYJlC2gAKoiHxNwaDwHRhzEHXMMokHF1AdiuO4-U7uEztgORgjsVCw1HFlgdgNRgDKAaMsUdD6rjQAgGmjNZH50UZQ8Bl4pcliLVnWJpjk8iBgAkBAMtwYIiUbSjUdY4BU34BnmfTT3ogND0lrui-pa8BzFozwguTqr7rFzIydMU8rOrwI5gPkhYbP0fIKZgWfCL4voLCpstPn-52f8XO9YxJCDhYPRJ8jJmPM-yvkieLj8JMMbE8loDnnrjeenRFo9WX0BJYk_5-GgXeb5taIW0LVmMvFuPSXOrsW
 
mv2sluVlDlXIYKOatVuwVDIui0s-WhL2jT1YyIyR-okoTgolGFIbABhFs1ElU4UYNRWCLewA4UYfGJoXrQd_I5KHMCfpnD-y9WBP4_0OzQUD4HRNQaM1gIj6GsAPAHYOgAcgAcQe1oDtn3MDKEHd2oH8IqQeQkHMX7itlaMbe0bQgLx51Uj6Gx5HpXBDUcnUVl74nceYBY2xsWhYbjYAAI6Dqh1gKT6JFixiJwpqmSmGukamvoOR2jBv1SmwcmbXOoyjEMCiMQYhiRS5qIYKw9BWBOBRMwRg2zsCsHp-e39H9qpYM15d79x2dd67Zwzo4z25Ovdx-9tDeDMDfaHQDzXIO7fg8h6b-aMPMxw4R2_S3xPSuo_R06FSVRWco_x3Fwn_uPdk8oRAG4yhGTU814zmTLOY8o93oQZTqm3NTRkEB_rAtzO833VsXrSp-c0HLxQSvAhi9kyyFMRoJRWgtG7c6VeKBphAA)
   
   ## Overall Approach
   
   1. **Use multiple Axis objects for rendering**, with each dimension 
corresponding to one Axis object
   
   2. **Extend axisTick to draw separator lines**, and add two additional empty 
Axes to enclose the entire Axis Label table (one as base, one as top)
   
   3. **How to merge identical Axis Label Cells?**
      a. Use `customValues` to hide unnecessary separator lines
      b. For duplicate Labels, use `customValues` to only render the middle 
Label (if there's an even number of duplicates, choose the latter one of the 
middle two)
      c. For Labels with even number of duplicates, there's an additional step: 
after rendering is complete, get the length between two ticks, then offset the 
Label to center it
         i. This relies on rich text formatting to offset and center
      ```javascript
      ((axis = 'yAxis') => {
          const chart = 
echarts.getInstanceByDom(document.querySelector('[_echarts_instance_]'));
          const indexName = axis === 'yAxis' ? 'yAxisIndex' : 'xAxisIndex';
          // Use convertToPixel to convert coordinates
          const pos1 = chart.convertToPixel({[indexName]: 0}, 0);  // Convert 
first position
          const pos2 = chart.convertToPixel({[indexName]: 0}, 1);  // Convert 
second position
          return Math.abs(pos2 - pos1); 
      })()
      ```
   
   4. **Multi-dimensional means the bottom-level dimension values may have 
duplicates, and duplicate Axis Labels will be automatically merged by ECharts**
      a. Transform the dataset by appending special characters + index after 
multi-dimensional axis dimension values to distinguish them
      b. The `formatter` in dataLabel/tooltip also needs to distinguish which 
dimensions are multi-dimensional axes and which are not
      c. Current approach is to process all dimension values in 
multi-dimensional axes: XXX => XXX\u001d{Index}
      d. All places that consume dimension values need to be handled accordingly


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to