Open Source

Charty - Visualize Real-world Data with Ruby

Charty - Visualize Real-world Data with Ruby

by Kazuma Furuhashi

In this presentation, Kazuma Furuhashi, a programmer from Tokyo and creator of the Charty library, discusses his open-source Ruby library designed for visualizing real-world data. The talk, delivered at RubyConf TH 2019, introduces the various features and functionalities of Charty, emphasizing the need for efficient visualization tools in the Ruby ecosystem, which currently lacks established standards compared to languages like JavaScript and Python.

Key points discussed include:

  • Charty Overview: Charty simplifies the process of creating data visualizations in Ruby, offering a structured approach towards data abstraction and visualization.
  • Data Abstraction and Visualization: The library consists of two main areas: one for structuring data and another for rendering visualizations. Users can easily change graph types by modifying minimal lines of code, enhancing flexibility.
  • Demo with Iris Dataset: Furuhashi demonstrates Charty's capabilities using the Iris dataset, showing how to initiate Charty, process the dataset, and create visual outputs such as scatter plots and bar charts simply by altering method calls.
  • Integration with Active Record: Charty allows seamless interaction with different data structures, including Active Record. This compatibility enables users to generate visualizations directly from database records.
  • Output Flexibility: The library supports multiple output formats including PNG, SVG, and JSON, accommodating varying requirements for developers.
  • Community Involvement: Furuhashi highlights the importance of community feedback in enhancing Charty, mentioning recent improvements like the addition of new graph types.

In conclusion, Charty stands out by providing a versatile and user-friendly solution for visualizing data in Ruby. It maintains a strong focus on community involvement, aiming to continuously adapt and evolve based on user experiences. Kazuma encourages viewers to explore Charty further and consider contributing to its development, thus enriching the Ruby data visualization community.

00:00:07.050 Hello, my name is Kazuma Furuhashi. I'm a programmer from Tokyo, Japan, and today I will be talking to you about my visualization library called Charty, which visualizes real-world data with Ruby. This is my first time in Thailand, and I wanted to see the Chao Phraya River, which I successfully visited yesterday. I'm so glad to be here and I appreciate the opportunity to speak.
00:00:20.869 I am also a member of Asakusa.rb and Red Data Tools, and I work at Speee Inc. I contributed to Ruby 2.6 standards and made Ruby 1.5 to 3 times faster through Creative Visualization. The Ruby community is quite vibrant, and I would like to know which programming languages you use. How many of you use Ruby, Java, Python, JavaScript, or other languages?
00:01:10.430 I primarily use Ruby, and recently I've been learning some interesting phrases in Thai and Japanese. I think they have similar pronunciations. For example, the word for 'shopping' in Thai is 'shopping' and in Japanese, it is 'shopping.' Similarly, the word for 'tea' in Thai is 'cha' and in Japanese, it is 'cha' as well. So, cha in both languages is pronounced similarly, which I think is quite fascinating.
00:02:22.759 Today, I want to introduce Charty, an open-source Ruby library that makes visualizing data simple. You can create various types of graphs, and it offers basic abstraction layers for data structures and visualization. There isn't a de facto standard visualization tool for Ruby, whereas languages like JavaScript and Python have robust libraries. Charty stands on the shoulders of these giants, providing an easy way to visualize your data.
00:03:38.859 Charty has two main areas: Data Abstraction and Data Visualization. The data abstraction layer makes it easy to structure your data, while the visualization layer handles the rendering. I will explain how to use Charty and demonstrate how to render various types of graphs.
00:04:26.800 First, we need some data to visualize. For this demo, we will use the Iris dataset. We will require the necessary Gem and initialize Charty, then load our dataset into a suitable format. Then we can utilize the render method to create a visual representation of the data. The flexibility of changing the type of graph only requires altering a single line of code.
00:05:15.060 For instance, if we want to render a bar chart instead of a scatter plot, we only need to change the method call. This power allows us to create different types of visuals while maintaining a constant code structure. Charty is capable of rendering multiple types of graphs including scatter plots, bar charts, and line charts.
00:06:23.580 Now, let’s focus on the code. To get started, we invoke Charty and create an instance for our chart. By setting the appropriate data parameters, we can generate our output image. We've seen how simple adjustments can completely change the type of graph generated without rewriting large portions of code.
00:07:05.430 As we continue with our exploration, we'll examine how Charty interacts with different data abstraction structures, including Active Record. This makes it really straightforward to manage our data and connect to various data sources. We can generate visualizations directly from our Active Record models.
00:08:17.000 Also, while demonstrating various types of graphs, you’ll see how Charty can accommodate multiple data structures seamlessly. Whether it involves direct matrix data or working with database records, an organized approach is maintained within the code.
00:09:28.300 Regarding the underlying architecture, Charty can work with different backends, extending the usability of your visualizations across different platforms. This means that regardless of the environment or data structure you choose, your requirements can still be met without concerns over compatibility.
00:10:50.600 In addition, Charty also allows for various output formats. You can easily generate images in formats like PNG or SVG as well as JSON data that can be picked up by JavaScript. This versatility makes it a popular choice for developers who need multiple output types.
00:11:50.660 Recently, I took it upon myself to enhance Charty and incorporate new features. For instance, I worked on implementing additional graph types and even creating the Jeffrey chart. These enhancements came about thanks to the fantastic feedback and motivation I received from the community.
00:12:52.480 The community involvement has been crucial for the progress of Charty. If you’re interested in contributing or have use cases you'd like to share, please reach out. We aim to continue improving and adapting Charty's features based on user needs, ensuring it stays a relevant visualization tool in the Ruby ecosystem.
00:14:10.000 In summary, Charty can respond to various data structures while simplifying the process to create visual representations of your datasets. The library currently supports numerous configurations and structures, such as Active Record connections, making it flexible in terms of usability.
00:15:03.800 If you are interested in exploring more about Charty or would like to join the conversation about data visualization in Ruby, please feel free to connect with me. Your contributions, feedback, and support are always welcome. Thank you for your attention!