Show HN: Tableau-Like Data Visualizations in JavaScript

(charts.com)

357 points | by pallavn 6 days ago

29 comments

  • pallavn 6 days ago

    Hey everyone,

    I’m part of the Muze team at Charts.com. Over the years I’ve seen lots of people who struggle to find the perfect balance between low-level visualization kernel (like d3), or black-box configurable charts (HighCharts, FusionCharts).

    So we decided to build Muze taking a data-first approach, where you load your data in an in-browser DataModel, run relational algebra enabled data operators to get the right subset of data, and then just pass to Muze engine, which automatically renders the best visualization for it.

    Any changes to data (including application of data operations) automatically updates the visualization, without you having to do anything else.

    Couple of added benefits are : - With other libraries, if you’ve to connect multiple charts (for cross-interactivity, drill-down etc.), you’ve to manually write the ‘glue’ code. With Muze, all charts rendered from the same DataModel are automatically connected (enabling cross-filtering).

    - Muze allows faceting of data out of box with multi-grid layout.

    - Composability of visualizations allow you to create any kind of cartesian visualization with Muze, without having to wait for the charting library vendor to release it as a ‘new chart type’

    - Muze exposes Developer-first API for enabling interactivity and customizations. You can use the low-level API to create complex interaction

    We’ve literally just launched this last month or so, so I’d love some feedback if you can spare the time.

    Thanks for taking a look!

    Website: https://www.charts.com/muze Github: https://github.com/chartshq/muze

    • cpsempek 5 days ago

      > I’ve seen lots of people who struggle to find the perfect balance between low-level visualization kernel (like d3), or black-box configurable charts (HighCharts, FusionCharts)

      This is the biggest pain point for me with most current solutions. Either development time is super fast (e.g., tableau, periscope) but going beyond 80% is difficult, or development time is much longer (e.g., d3 or apis thereof) but you get full customization and getting to 100% is straightforward. For me, there is certainly a need to develop an 80% solution fast, but I also am always wanting to then redo the whole thing with lower level solution. I would prefer that I can piggy back off the 80% solution to 100% in the same software. That's a huge win for me. Thanks for providing a solution to this end, will definitely play around with this.

      • hglaser 5 days ago

        Hey `cpsempek, Periscope Data CEO here.

        In a perfect world, how would the charting in Periscope work? How would you want to go from getting 80% very fast, to going to 100%, in the same software?

        • cpsempek 5 days ago

          Hi, thanks for the reply! Actually, apologies for throwing your name next to tableau like that. I think your product does a great job incorporating things like R/python scripting to allow more flexibility in how data can be manipulated within the product. In this sense I prefer periscope to tableau (an in many other senses actually).

          A problem I encountered (granted over a year ago) was creating grouped bar charts with confidence intervals. Bars were grouped on some discrete x axis labels. The suggested solution for confidence intervals on grouped bars was to use a scatter plot to draw the confidence intervals, but this clumped them all on the xlabel position, not in the center of each bar. matplotlib for example treats the visualization as an object, in which case it makes a lot of sense that to add confidence intervals just query the bar objects for their positions and place line segments of desired widths in the center of the tops of the bars (or wherever, you have full control over this). So in general, a marriage of these two paradigms, quick development of a visualization based on data, but then the ability to switch to viewing and manipulating the visualization as a collection of instantiated objects with full control over their attributes.

          I am open to revisiting over any development periscope has made to this end.

          • hglaser 5 days ago

            Appreciate the feedback!

            Yeah, the hack you described for CIs is typical of "80% charting". We have a list of probably thousands of longtail visualization requests and we're way past the 80/20 point.

            These days customers who want to go 100% use the Python/R editors and do their custom visualization there. So you do your SQL query like usual, but then pipe it to Python/R for the visualization. Have you tried that, and has it worked for you? Or do you prefer another model?

            • pallavn 5 days ago

              Maybe try Muze to be able to build all those long tail viz :) - given that you don't have to think of any viz in Muze as a chart type - but rather compositions through layers. Would love to talk to you guys!

              • hglaser 5 days ago

                Always happy to talk! harry at periscopedata.com

                • pallavn 5 days ago

                  Sending you an email tomorrow

                  • tseabra 4 days ago

                    offtopic: this is why I love HN! :)

              • arama471 5 days ago

                If you don't mind, could you list the other things that make you prefer periscope to tableau? Also when you say R and python scripting, do you mean using them to prepare your data or to do something else?

            • antisthenes 5 days ago

              > The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

              Now, I'm not saying that directly applies to your problems, but there's good reason this is a saying.

              Going from 80% to 100% will take as long or longer as going from 0 to 80, because the last 20% is all edge cases that are a nightmare to test and mentally exhausting to comprehend.

              Sometimes, it's just never cost effective to go from 80 to 100, and it's best to just leave it as is, even if there is some manual work left over.

              • pallavn 5 days ago

                Would love to know what is scoped in that last 10%?

                • antisthenes 4 days ago

                  I can't speak for others, but in my case it was uncovering an issue with a legacy feature that led to needing to rewrite a good chunk of the site logic.

            • moorhosj 4 days ago

              I'm trying to implement the Programmatic trellis layout, but having difficulty re-creating it because I can't see the structure of the data. I started with the "yo muze" generator and am trying to manipulate with my own data.

              Am I missing something?

            • educationdata 2 days ago

              Do you support exporting the chart as png, pdf, etc.?

            • adilmoujahid 5 days ago

              Is there a plan to create a version that generate the graphs and manage all the filtering on the server side instead of having all the data in the browser?

              This will be very helpful for cases that uses large datasets...

              I built visualization using dc.js, and working with large datasets was the biggest pain point for me.

              http://adilmoujahid.com/posts/2016/08/interactive-data-visua...

              • yonl 5 days ago

                We had plans to move DataModel (manages all data ops) to serverside. We even have a half baked DataModel in Scala which we thought we would do it once we understand some usecase. But currently we have put it on hold.

                We would love to know your - use case - number of data points - ops on data on serverside

                You can mail us to eng@charts.com

                • adilmoujahid 5 days ago

                  One use case could be a data visualization similar to what I built in [1]

                  To build the visualization in [1], I used 3 datasets in csv format from a kaggle competition [2], and I implemented the charts using dc.js and Leaflet.js. The charts were interactive and I could managed to filter the data even in the map.

                  The largest dataset was 284 MB, which was still ok and didn't crash my browser.

                  There were 2 drawbacks to my approach: 1- All the data was in the browser. If my data was bigger (~1GB), then it would crash my browser. 2- If I deploy the visualization to a server (for example AWS), then it would make the rendering extremely slowly as it has to download all the data to the browser...

                  [1] http://adilmoujahid.com/posts/2016/08/interactive-data-visua...

                  [2] https://www.kaggle.com/c/talkingdata-mobile-user-demographic...

                  • dbetteridge 5 days ago

                    Just had to say thanks [1] , was one of my first reads when learning dc.js and very helpful!

                    • yonl 5 days ago

                      Makes sense. Will keep you posted on the plans.

                    • 5 days ago
                      [deleted]
                      • greggyb 5 days ago

                        It seems to me like you could leverage any number of analytical engines that expose relational interfaces, rather than go to the trouble of building your own relational model. What are the goals in building first, rather than integrating?

                        • yonl 5 days ago

                          I'm glad you asked this.

                          So here is the thing with our DataModel. Every time you perform an ops on DataModel it create another instance. Now performing multiple such actions create a DAG where each node is an instance of DataModel and each edge is an operation.

                          We have auto interactivity, which propagates data (dimensions) pulse along the network. Any node which is attached to visualiztion receives those pulses and changes the visual.

                          So far I have not found any relational interface which exposes this DAG graph and api to user. Hence we though of building this.

                          Having said that, we might use some established relational interface and do the propagation ourself.

                          • greggyb 4 days ago

                            The implementation you are discussing sounds pretty elegant. I am most familiar with Power BI from a data viz perspective, but have used most of the enterprise viz tools out there.

                            The thing that always struck me about Power BI (and also Qlik) is that it is very much a model-first tool. Visualization is secondary to the model, to the extent that much of the friction I see in new users has been treating it as a reporting/layout/visualization tool when, in fact, it is a data modeling tool with a visualization engine strapped on.

                            One of the big drawbacks with Power BI is that it has a terribly inefficient implementation for propagating filter contexts for visual interactions (this is their translation of your "auto interactivity, which propagates data (dimensions) pulse along the network"). I do not know the internal implementation, but I am relatively certain that visual interactions are ~O(N!) in the number of visual elements on a report page, based on my experience of performance scaling across a wide range of reports. Regardless, one of the best practices is to limit a Power BI report page to a small number of visualizations (recommendations of the cutoff value vary, and types of visuals can also impact this).

                            If I understand you correctly, you are calculating the minimum set of recalculations/re-renderings necessary, based on the data element that a user has interacted with. This should be something much closer to O(N) in the number of visuals to propagate user selections to other visuals. I am making an assumption that most visuals should interact, as typically the scope of a single report should have a high degree of intersection of dimensionality across all report elements.

                            I do not know of any analytics engine that exposes the sort of DAG and associated API you are discussing, either. The reason for my initial question was simply because that sort of engine is a product in and of itself. There are plenty of columnstore databases (and following other paradigms, but optimized for OLAP workloads) out there. It seems like biting off a lot to tackle both the data engine and the visualization tier at the same time.

                            The big reason that I ask is that this sort of approach to visualization seems to me to benefit greatly from a data model that supports transaction-level detail. The type of interactivity that you expose is extremely powerful. I have seen interactive tools hamstrung by data models that do not allow sufficient interaction. As soon as you put interactivity in front of users, in my experience, they want to do more with the data. If you are limited to datasets that can live comfortably in the browser, that seems a showstopper to me, as it will require pre-aggregation to fit most of the datasets I've seen; pre-aggregation negates many benefits of interactive data exploration.

                            I'll be taking a much further dive into your product either this weekend or next. I'm very interested.

                            • yonl 4 days ago

                              You are absolutely correct the propagation for us is O(n) as the graph is directed. But the problem there is multifold. Once a node receives propagation pulse it tries to figure out the affected subset using the dimensions received as propagation pulse. This requires joining, hence a chance to build a O(mn)cartesian product. If you see https://www.charts.com/muze/examples/view/crossfiltering-wit... example the contribution bars are drawn when the first chart is dragged requires joining follower by groupBy.

                              Which is why performing this in browser env even for low amount of data (say 10k) is nightmare. There are ways you can address this but while in browser you hit the limit pretty soon.

                              We wanted the concept to be validated first hence we have build it for browser only. But would love to hear / learn / discuss with you on this before we go ahead and build the data model in server.

                              Another ambiguity with the interaction is visual effect of interaction. Questions like do you really want all your chart to be cross connected. A in house survey showed us there is no certainty of the answer. And what kind of visual effect should happen on interaction differs person to person and is a function of use case. Which is why we have chosen go for chosen behaviour like

                              ``` muze.ActionModel.for(...canvases) / for all the chart in page / .enableCrossInteractivity() / allow default cross interactivity / .for(tweetsByDay, tweetsByDate) / but for first two canvas in the example / .registerPropagationBehaviourMap({ select: 'filter', brush: 'filter' }) / if selection using mouse click or brushing happens filter data / ```

                              we are still writing docs for this. We hope to finish all the these docs in two weeks time.

                              • greggyb 4 days ago

                                I'm happy to continue this discussion in further detail and share my experience. You can get in touch with me at the email address in my profile if you'd like.

                                You're hitting a very important question in your fourth paragraph about ambiguity of desired effect from interaction. I often catch myself thinking I've heard every use case and built most of them in various viz tools. But I have learned that I am always wrong when I think that. I frequently encounter people asking for new things and it is always a toss-up whether what they want is trivial and novel or impossible and obvious.

                                I tend to be a data-guy much more than a viz-guy, but I fully understand the value of viz for actually presenting knowledge. Like I said, I'm interested in trying out your tool more.

                              • infinite8s 4 days ago

                                Out of interest, what size of dataset are you talking about? Thousands of records? Millions?

                        • texodus 5 days ago

                          Might I suggest giving Perspective.js a look? Supports many of the same visualizations as Muze (and some it doesn't, specifically datagrids), is user-configurable, written in WebAssembly (C++) for extreme performance, and can run trivially on the server via node.js - there is even a CLI version:

                          https://github.com/jpmorganchase/perspective https://github.com/jpmorganchase/perspective/tree/master/exa...

                          • yonl 5 days ago

                            Just had a look, looks amazing.

                            WebAssembly is on our radar and is coming soon. But we just wanted to release a super early version of what we build so far.

                          • nrjames 5 days ago

                            I just want to chime in as this being the biggest limitation to dc.js. For these solutions to scale, there needs to be a server-side data processing option.

                            • yonl 5 days ago

                              Hey, we started porting DataModel (where all the data ops happens) in Scala but then put it on hold.

                              Will figure out the effort and roadmap and then keep you updated on the plan.

                          • koolba 5 days ago

                            Holy crap that's an A-level domain. How'd you guys get it?

                            • Drdrdrq 5 days ago

                              Interestingly enough, while this is as good as it gets, my initial reaction to domain name was negative. From previous experience I learned that domains like that are taken by squatters or companies that... Well, don't really know how to capitalize on them. Kudos to OP for actually offering something to do with charts! :)

                              • pallavn 5 days ago

                                Well - we took it from squatters :) and are trying to turn it into something really useful. That's why looking for feedback on what we've built!

                                • no1youknowz 5 days ago

                                  Took it from squatters? Do you mean legal action?

                                  If so. I think this would definitely be worthy of a blog post on exactly how you did it.

                                  Everytime I search for domain names, they are all taken up by squatters who want 5 to 6 figure amounts and they have been sitting on them for more than 5 years, 10 in some cases.

                                  Of course I email them back laughing, but it does mean I have to choose something completely different.

                                  I'm definitely not going to do a snappa.io to snappa.com lol [0].

                                  [0]: https://www.reddit.com/r/Entrepreneur/comments/60gnyx/how_we...

                                  • sizzle 5 days ago

                                    I really wish there was a legal limit to how long you can squat, say 5 years, before it goes to a lottery system for a pool of people who applied to be apart of the lottery and can show legitimate use for it.

                              • harrisreynolds 5 days ago

                                Great question! We have https://chart.ly which is pretty good. But charts dot com???

                                • pallavn 5 days ago

                                  Yeah, we got lucky :)

                              • physcab 5 days ago

                                I've been a career data analyst for 12 ish years. At first I didn't get the reference to Tableau, because I use Tableau for about 5-8 hours every day. I've played around with every new charting library since Flex because I've always wanted to create a free version of Tableau that gets me 80% of what I use Tableau for, but with 1% the frustration of using Tableau. Problem was, I could never figure out how Tableau is able to create its visualizations so easily just by drag and drop. Every library makes you think of the chart you want to make beforehand, but as an analyst, I work on the data first then spend almost equal amount of time finding the most intuitive visualization for the trend I'm trying to convey. So I've just put that idea on hold indefinitely.

                                I went through the tutorial and I have to say...oh man, this is amazing. Building a Tableau clone is now possible! I hope you guys don't go under because its going to take me a while, but I'm super excited!

                                Does this work on mobile? Also, when I click "Play" the chart takes atleast 1-2 seconds to render. Is that just your code running engine or does every visualizations have that lag?

                                • yonl 5 days ago

                                  Hey it does work on mobile. However, remember visualizations like crosstab, splom are not meant to be displayed in a space constrained area as is. There are multiple way to handle this situation. At this point of time Muze does not changes layout based on space.

                                  The web framework fetches data, does some additional checking on data and schema, process visible code and render it. That is probably the reason you are seeing lag.

                                  Also there are few areas where Muze performance needs to be improved. We are doing a release to address this soon.

                                  • kakashi141 5 days ago

                                    Hey physcab, The charts do work on mobile. Also the lag you are seeing is only a limitation of our code engine which has to fetch and process the sample in an iframe due to security constraints. In a normal environment where the library is loaded via a script tag the charts should render very quickly.

                                  • d0m 5 days ago

                                    Hey, what did you guys use to build the feedback/roadmap part? (https://feedback.muze.charts.com) Is it a third-party service or something built in-house?

                                  • jupiter90000 5 days ago

                                    We currently use Plotly quite a bit where I work for a customer facing website with a wide variety of charts. Does anyone know what some of the tangible benefits might be to migrating to this instead of using Plotly?

                                    • cjf4 4 days ago

                                      Having only browsed both Plotly and this project, this is my understanding:

                                      Plotly seems like its just the charting/graphing layer. A common use case (and increasingly an expectation) is that a series of graphs on a single page be responsive and cross filterable. For instance, if you click on a single element on one chart, it should filter the related charts accordingly. Additionally, these filters should build on each other and the developer/analyst should be able to define that.

                                      Really, you're now doing a form of data modelling and in the domain of BI, and Plotly isn't going to help you figure any of this out.

                                      Tableau and Power BI have gotten traction by building products that not only include but prioritize this form of modelling. Once you define your data model, you get the multi dimensional charting for free.

                                      The appeal to me of this library (not having done a thorough G2) is an open source alternative to those products that integrates charts and data modelling easily.

                                      • yonl 5 days ago

                                        Depends on your use case. Can you share any pointers where

                                        - you feel you had hard time achieving with Plotly? - a feature you wanted is not supported by Plotly?

                                        • erikig 5 days ago

                                          Thanks for sharing Plotly.

                                          I'd recommend pointing out the Plotly features you'd like to improve and seeing if the Muze team has solutions/improvements.

                                        • HHalvi 5 days ago

                                          Just saw a tweet storm of the CTO of Charts.com talking about Muze and a lot of the things make sense as to why they went with a data first model and the roadmap ahead. Link for anyone that's interested: https://twitter.com/1dot61803/status/1047384637289500673

                                          • atombender 5 days ago

                                            Looks promising. How does Muze integrate with React?

                                            • pallavn 5 days ago

                                              It’s well compatible with react. However we dont have a react component at this point of time. We are gonna make that happen soon.

                                            • codegladiator 5 days ago
                                              • yonl 5 days ago

                                                Voyager is a recommendation system based on variables characteristics present in data. User is mostly limited by the offerings of voyegar (same story of https://github.com/vega/polestar).

                                                Vega is descriptive version of d3. We find it hard for debugging and creating complex viz.

                                                Vega-lite is concise and more intuitive version of vega though.

                                                However Muze was created to start directly from data, creating layout, composable layers, automatic cross interaction and a robust interaction mental model. Muze is inspired from VegaLite-InfoVis and Snap together viz paper.

                                                • domoritz 5 days ago

                                                  Hi, one of the Vega-Lite author here. I'm glad you like Vega-Lite and were inspired by our Infovis paper. Vega-Lite is much more mature than when we wrote the Infovis paper so I suggest you to check it out. Compared to Muze, Vega-Lite is embracing full declarativeness.

                                                  • yonl 5 days ago

                                                    Hey I think you are Dominik (guessed from your handle). Thanks for the reply.

                                                    Vega-Lite paper and layered grammar of graphics are the biggest motivations to write Muze. Vega-Lite is still my goto viz library for my ipython and JS work. Hence there are healthy intersections between vega-lite and muze terminologies and concepts.

                                                    Would definitely love to check new development.

                                                    • devj 5 days ago

                                                      How is Vegalite different from Muze?

                                              • vlandham 5 days ago

                                                I'd like to know how the team made that amazing SVG-based animated banner image. That alone looks amazing!

                                                • pallavn 5 days ago

                                                  It was a handwritten svg animation with d3 later enhanced using adobe illustrator.

                                                • bigger_cheese 5 days ago

                                                  Is it possible to have multiple scales on a single axis this is something we use a lot at my work but very few javascript charting libraries seem to support.

                                                  Example here: https://imgur.com/a/zd5Giom

                                                  • uptown 5 days ago

                                                    Looks very nice at first glance. I'm just digging into each example visualization. Noticed that the "Bubble with temporal axes" seems to peg my browser (Chrome 69 on Mid 2015 2.5 GHz Intel Core i7 Macbook Pro).

                                                    • yonl 5 days ago

                                                      yes we have also noticed that and fixing that.

                                                    • andyfleming 5 days ago

                                                      Thanks for sharing!

                                                      A number of the charts in the examples are cut off (height-wise). https://www.charts.com/muze/examples/view/heatmap for example (in Chrome 69). Seems fine in Firefox.

                                                      https://imgur.com/a/Dq4fiz0

                                                      • yonl 5 days ago

                                                        Ahh. Will fix this.

                                                        For the time being, you can click on the play button on top right corner of the code section.

                                                      • krikou 5 days ago

                                                        Shameless plug for a data + markup based approach, hiding some of d3.js complexity: https://github.com/PolymerEl/multi-verse.

                                                        Codebase is being migrated to Polymer 2.0, and better documentation.

                                                        • pallavn 5 days ago

                                                          Looks great! Can we think of a way to integrate muze using your approach? :)

                                                        • matthjensen 5 days ago

                                                          How do you plan to support the team and project, financially, over the long haul?

                                                          • pallavn 5 days ago

                                                            We intend to be an open-core company, and monetize support and tools around the product.

                                                            • matthjensen 5 days ago

                                                              Cool. You might consider describing Muze as a project rather than a product. E.g., On the homepage: Our first product, Muze... -> Our first project, Muze....

                                                              • pallavn 5 days ago

                                                                Thanks for this nugget. Will consider and then change! Curious question: why would you not want to call an open source library as product?

                                                                • matthjensen 5 days ago

                                                                  I associate "product" with something that is sold, so when I saw Muze described as a "product," but I didn't see a price, I was somewhat wary that the price was hidden or forthcoming.

                                                                  "Project" is also a fairly common term to refer to open source tools and the community around them. See the nav bars for linuxfoundation.org or numfocus.org, for instance.

                                                                  • runako 5 days ago

                                                                    ^^^ I had the same thought process. I spent a few minutes clicking around the site to figure out the catch to the open-source library that is the only product of a company with a $$$$ domain.

                                                                    • pallavn 5 days ago

                                                                      That's just the first product - open-core.

                                                                      We will be making more products in future, some OS, some paid. So yes, monetization is on the cards :) - but our first goal is to create real good value!

                                                          • sandGorgon 5 days ago

                                                            this was the most interesting thing for us, but it is broken in Chrome/Linux. https://www.charts.com/muze/examples/view/microcharts-in-tab...

                                                            Also what is the Reactjs story here ? We went down the "tabular views" journey a while back and eventually settled on react-virtualized which i think is the best of breed.

                                                            • yonl 5 days ago

                                                              Hey, which linux distribution are you talking about? We have checked in chrome/Ubuntu and seems it works alright.

                                                              However, will make sure it gets tested with all linux dist before next release.

                                                              Are you looking for integration? > Also what is the Reactjs story here ?

                                                            • starsol 5 days ago

                                                              Is there any timeline example? Like http://visjs.org/timeline_examples.html

                                                              • pallavn 5 days ago

                                                                Thanks for bringing this up. It’s possible to create visualization like this using Muze easily. Will create an example and keep you updated. Should we reach out to you once done (if yes, let me know how)!

                                                              • ccozan 5 days ago

                                                                Nice work. I see a lot of potential.

                                                                Offtopic question, apologies: Where and how one can create the start page animation ( the one in 3D , with the moving impulses and floating charts ) ?

                                                                • pallavn 5 days ago

                                                                  It was a handwritten svg animation with d3 later enhanced using adobe illustrator.

                                                                  • ccozan 5 days ago

                                                                    Thank you. Very well done!

                                                                    • sbr464 5 days ago

                                                                      That SVG is very well done!

                                                                  • rayshan 5 days ago

                                                                    How does this compare to Plottable, another composable visualization library?

                                                                    http://plottablejs.org/

                                                                  • jansan 5 days ago

                                                                    That's quite an interesting mix of HTML and SVG. Cool stuff.

                                                                    The website could be a bit more responsive. The charts are overlapping if I make the browser narrower.

                                                                  • Jerry2 5 days ago

                                                                    Hi pallavn (or someone else who might know), how was the animation at the top of the page created? Beautiful work all around btw!

                                                                    • yonl 5 days ago

                                                                      It was a handwritten svg animation with d3 later enhanced using adobe illustrator.

                                                                      • dstroot 5 days ago

                                                                        Is the person who did it available for hire? Awesome work!!

                                                                        • Jerry2 5 days ago

                                                                          Thanks yonl!

                                                                        • kannangsl 5 days ago

                                                                          thanks Jerry2, the Animation was created using adobe aftereffects and exported using the bodymovi plugin as a JSON file along with keyframe images. The exported animation can be loaded using the lottie framework. https://airbnb.io/lottie/. Hope this helps.

                                                                        • tyingq 5 days ago

                                                                          The example pages all have the visualizations in an iframe.

                                                                          Is that required, or is there some way to generate and display these without the iframe?

                                                                          • kakashi141 5 days ago

                                                                            Hey tyingq, The examples are loaded in iframes due to security considerations given that the sample code is editable. For your own use you don't have to load the charts in in iframe.

                                                                            • pallavn 5 days ago

                                                                              That's just our doc framework (early days). You can embed them in a DIV/SPAN etc.

                                                                            • troynt 5 days ago

                                                                              How will this be monetized? Any pricing/licensing info?

                                                                              • pallavn 5 days ago

                                                                                Open-core is free. We'll monetize support & tools we build around it!

                                                                              • anonnel 5 days ago

                                                                                Where did you get the cool animation? It’s nice.

                                                                                • kakashi141 5 days ago

                                                                                  Animations like the one on the front page of https://www.charts.com/muze can be created using adobe aftereffects and exported using the bodymovi plugin as a JSON file along with keyframe images. The exported animation can be loaded using the lottie framework. https://airbnb.io/lottie/

                                                                                • pallavn 5 days ago

                                                                                  It was a handwritten svg animation with d3 later enhanced using adobe illustrator.

                                                                                  • somada141 5 days ago

                                                                                    lol was curious about that too. Looks gorgeous!

                                                                                • modzu 5 days ago

                                                                                  thanks for sharing, but holy slowwww

                                                                                  • NVRM 5 days ago

                                                                                    Exactly what I saw. This isn't a matter of slow server, but some examples are taking way too much ressources. Freezes. In the case of many charts in the scope, as i need refresh every 10 seconds, this will turn in blocking in no time. Testing performances in firefox debugger is already freezing with one chart and no refresh, and i didn't see the garbage collector be significant. (Memory leaks..) Too bad that charts are good. But performances should be a big warning.

                                                                                    • yonl 5 days ago

                                                                                      Hey we noticed https://www.charts.com/muze/examples/view/bubble-with-tempor... is a slow one but should not as bad as you are saying. However we are making some changes for performance and gonna release in few weeks. But i’ll double check the scenarios you mentioned.

                                                                                      • pallavn 5 days ago

                                                                                        Sorry - early days. Thanks for pointing out. We'll fix them as we go! Soon.

                                                                                      • pallavn 5 days ago

                                                                                        Hey, any specific example are you talking about? We know https://www.charts.com/muze/examples/view/bubble-with-tempor... is a pain so far and we are fixing this along side other performance improvement.

                                                                                      • aldoushuxley001 5 days ago

                                                                                        Great Animation on the front page.

                                                                                        • kannangsl 5 days ago

                                                                                          Thanks, aldoushuxley001

                                                                                        • metasyn 5 days ago

                                                                                          What does pseudo-immutable mean?

                                                                                          • yonl 5 days ago

                                                                                            So we create instance of DataModel once and then we perform operation like filtering, projection of columns, sorting etc. Everytime an operation is performed a new instance of DataModel is returned. Hence its immutable. But under the hood there is only one copy of data resides in the system shared by all instance of DataModel, for every operation we just record a formula and save it on DataModel instance. The data for that particular instance is computed on demand based on the formula. Its not a pure immutability by definition. Hence pseudo-immutable.

                                                                                            However, every operation does not support formula storing. Operation like joining, grouping creates new data.

                                                                                            We are updating the docs rapidly. All this info would be on the docs soon.

                                                                                          • victor106 5 days ago

                                                                                            how does this compare with fusioncharts ?

                                                                                            • pallavn 5 days ago

                                                                                              FusionCharts is a configurable JS charting library. You choose your chart, define the parameters (highly configurable, though) and then render it. FusionCharts' strength is ease of use, backward compatibility, theming etc.

                                                                                              Muze is data-first. You start with data, apply any operations (if needed), then render. Muze automatically detects the right chart for that and then renders. Also Muze allows you to compose any kind of cartesian visualization, as it follows grammar of graphics.

                                                                                              So if I've to explain this in a spectrum, it goes like this:

                                                                                              d3 (very powerful, high learning curve, you can do anything) Muze (data-first, Grammar of graphics oriented, compose viz) FusionCharts (chart-first, lot of depth in configurations, but can't extend yourself for new chart types)

                                                                                              Hope this helps.

                                                                                            • petersonh 5 days ago

                                                                                              This looks interesting, had to look on my phone, thought you might want to know that my corporate firewall blocked it in case others are experiencing this as well.