Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Meta][2.17][VisBuilder-Next] VisBuilder Enhancement Initiative: Advancing Visualization Capabilities + Improvements #7601

Open
1 of 5 tasks
ananzh opened this issue Jul 31, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request Meta Roadmap:Ease of Use Project-wide roadmap label v2.17.0 visbuilder-next visbuilder with vega integration

Comments

@ananzh
Copy link
Member

ananzh commented Jul 31, 2024

This project aims to expand the visualization capabilities of VisBuilder by incorporating pie chart support using Vega specifications. This enhancement will allow users to create and customize pie charts within the VisBuilder interface, leveraging the power and flexibility of Vega for rendering. The project involves modifying existing data handling mechanisms, creating new Vega specification generators, and updating the user interface to accommodate pie chart-specific options.

Key points

  • Data Structure Adaptation: The project requires adapting the existing data handling mechanisms to support the hierarchical structure of slices data, which differs significantly from the series data used in other chart types. This involves modifying the flattenDataHandler to correctly process and transform slices data into a format suitable for Vega pie chart specifications.
  • Integration with Existing Architecture: Integrating pie chart support into the existing VisBuilder architecture without disrupting current functionality.

Tasks

  • Research and Analysis
    • 1.1. Study vislibSlicesResponseHandler and slices response format
    • 1.2. Analyze different pie chart Vega specifications
    • 1.3. Document key differences between series and slices data structures
  • Implementation
    • 2.1. Update flattenDataHandler: Modify to support 'slices' handler type. Implement data transformation for pie charts
    • 2.2. Create generateSlicesVegaSpec function: Implement basic pie chart Vega spec generation. Add support for different aggregations. Implement color scales and legends for pie charts
      • Implement functions for angle calculations
      • Create helpers for data aggregation if needed
    • 2.3. Modify createVegaSpec function: Add conditional logic to use generateSlicesVegaSpec for pie charts
    • 2.4. Add pie chart as a selectable chart type. Create controls for pie-specific options.

This project aims to bring the advanced visualization settings from the traditional vislib to the VisBuilder using Vega specifications. This project will significantly enhance the customization options available to users, allowing for more detailed and precise control over chart appearance and behavior. By implementing features such as custom ordering, value displays, grid controls, and threshold lines, we'll provide users with a more powerful and flexible visualization tool that matches the capabilities of the original vislib while leveraging the advantages of Vega-based rendering. Here is a list of current missing settings in VisBuilder:

  • Panel Settings

    • Order buckets by sum: Sorts the data buckets based on their sum values rather than default ordering.
    • Show values on chart: Displays the actual data values on the chart.
    • Show X-axis lines: Adds vertical gridlines to the chart.
    • Y-axis lines: Options to show or hide horizontal gridlines.
    • Show threshold line: Adds a horizontal line at a specified value for reference.
  • Metrics & axes

    • Metrics: Configures the data to be visualized (e.g., Count).
    • Value axis: Specifies which axis to use for the metric values.
    • Chart type: Selects the type of chart (e.g., Bar).
    • Mode: Determines how multiple series are displayed (e.g., Stacked).
    • Y-axes: Configures settings for the Y-axis.
    • X-axis: Configures settings for the X-axis, including position and label options.

To support these features in Vega, we need to:

  • Modify the data transformation steps to support ordering buckets by sum.
  • Add marks for displaying values on the chart.
  • Include grid specifications for X and Y axis lines.
  • Implement a threshold line as an additional mark.
  • Expand the scale and axis configurations to support various positioning and labeling options.
  • Create a more flexible chart generation system that can switch between chart types and modes.
  • [VisBuilder-Next] Split Row Support for VisBuilder

This project aims to enhance the VisBuilder's capability to create more complex and flexible visualizations by adding support for split rows. To support split rows in addition to split columns, the changes required in the Vega specification are significant but not fundamentally altering the entire structure. The main changes would involve modifying the layout and scales to accommodate both row and column splits. This is a moderately complex change that requires careful consideration of how data is transformed and how the visual layout is structured. This also requires an expansion on config in VisBuilder, which currently only supports secondary panel.

Key Technical Difficulties:

  • UX change: Designing an intuitive interface for users to specify and configure row splits in addition to column splits.
  • Data Transformation: Modifying the data transformation logic to support both row and column splits simultaneously.
  • Layout Complexity: Designing a flexible layout system in Vega that can handle both row and column splits, potentially with nested structures.
  • Scale Management: Adapting scales to work correctly across both row and column splits, ensuring proper alignment and consistency.
  • [Meta][VisBuilder-Next] Vega Improvement, Standardization and Fixes
    The "Vega Integration Enhancement and Standardization" project aims to address several key areas for improvement in our current Vega implementation within VisBuilder. This initiative will focus on expanding data type support, enhancing user experience through improved tooltips, ensuring consistency across Vega and Vega-Lite implementations, and strengthening our testing framework. Key Areas of Improvement:
  • Date Range Support

    • Implement support for date range objects in Vega specifications
    • Ensure proper handling and visualization of date range data types
    • Develop data transformation utilities for date range processing
  • Tooltip Enhancement

    • Redesign tooltip implementation for Vega specifications
    • Align tooltip appearance and behavior with Vega-Lite for consistency
  • Layout Consistency

    • Standardize layout implementations between Vega and Vega-Lite visualizations
  • Testing Framework Expansion

    • Develop comprehensive functional tests for Vega-based visualizations
    • Implement automated visual regression testing for chart outputs
    • Create test scenarios covering various data types and chart configurations

Note: We need to finalize the 2.17 scope.

@ananzh ananzh assigned ananzh and LDrago27 and unassigned ananzh Jul 31, 2024
@ananzh ananzh added visbuilder-next visbuilder with vega integration v2.17.0 labels Jul 31, 2024
@ananzh ananzh added enhancement New feature or request Meta labels Jul 31, 2024
@ashwin-pc ashwin-pc added the Roadmap:Ease of Use Project-wide roadmap label label Aug 26, 2024
@getsaurabh02 getsaurabh02 added Roadmap:Ease of Use Project-wide roadmap label and removed Roadmap:Ease of Use Project-wide roadmap label labels Sep 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Meta Roadmap:Ease of Use Project-wide roadmap label v2.17.0 visbuilder-next visbuilder with vega integration
Projects
Status: New
Development

No branches or pull requests

4 participants