Kazuma Furuhashi

Charty - Visualize Real-world Data with Ruby

Kazuma is a Programmer and the Creator of a visualization library named Charty. A member of Asakusa.rb and Red Data Tools. Working at Speee Inc. His talk is about his visualization library called "Charty".

RubyConf TH 2019

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!