474,109 Members | 1,962 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

What You Need to Know When Selecting a Chart

danieljebaraj
1 New Member
Turn the pages of any magazine for developers and you will see ads for charts. Page after page is filled with images that look almost too good to be true. More than a few appear touched up with Photoshop to provide that extra glint. In this article, we will look at what makes a good chart beyond the obvious look and feel aspects.

Types of charts available out of the box
There are over 30 chart types that are used commonly in business applications (excluding specialized charts for financial and other applications we will address further in this paper). Some of the most common types include bar, column, area, line, scatter, bubble, pie, pyramid, funnel, polar, radar, Gantt, and tornado. Additionally there are stacked variants for many of these charts–stacked area, stacked bar, etc.

You will save a lot of time if the charts that you are most interested in are available out of the box. Also, be sure to test combinations of the different chart types. Charts types that can be plotted on similar axes should be supported together.

Axis properties
There are a few things you should be able to do with a chart’s axis: You should be able to reverse its direction, shift its origin, include major and minor tick marks, customize individual tick marks, and apply labels to points.

Charts should also support automatic range calculation. Bonus points if the range calculation is friendly—calcul ated ranges should be readable.

Another important feature is the concept of a scale break. This is useful in cases where a section of data is not to be represented on the chart. Breaks are typically represented with a visual indicator on the chart.

Support for multiple chart areas
There is often a need to display multiple charts side-by-side. While it is possible to achieve this with multiple chart instances, it is not usually the best option. Lining up multiple charts can be quite tricky. Range calculations may not be identical. Label positions and spacing can be slightly different. It is much easier if the chart natively supports the concept of multiple chart areas.

Chart areas are essentially charts within charts. Multiple layout options should be available for positioning chart areas relative to each other. The chart should also offer options to synchronize multiple chart areas so they line up perfectly. This will allow related data to be plotted with a shared axis.

Support for data binding
When selecting a chart for frameworks such as WPF or Silverlight, it is important to ensure that the chart has solid support for data binding that is in-line with expectations on the framework of choice. It is also important to check if there is built-in understanding of notification interfaces such as INotifyproperty Changed and INotifyCollecti onChanged. Support for these interfaces can greatly reduce the amount of code you have to write to enable common features. It is also important to test for the correct handling of empty values when binding.

Drill-down display
The chart should support drilling down. Drilling down involves the provision of out-of-the-box options such as replacing data in the chart with data from a new context. For instance, clicking on data for a state loads detailed information for that state. Some charts may additionally offer an in-line option such as a rich ToolTip. It should also be possible to obtain the correct context and then display your own user interface for the drill-down.

Performance
Performance aspects to consider include load time, total memory usage, time taken to add a point to a series (to be tested when the series contains a high number of points already), time taken to remove a point from a series, time taken to add a series, time taken to remove a series, and time taken to add or remove chart areas.

It is also important to pay careful attention to the optimization being performed by the chart in order to display large numbers of data points. In some cases, charts will simply compress this data and then display compressed data with great performance characteristics but with a resulting loss in fidelity. This may or may not be important, depending on your needs.

As a general rule, test with at least three to four times the amount of data you expect to be working with.

3-D charting
Three-dimensional charts can be broadly classified as two-dimensional charts displayed with 3-D visuals, but true 3-D charts are plotted with z-axis values. If you are interested in true 3-D charting, be sure to test the functionality. Most business-oriented charting packages do not focus on true 3-D charts; they may offer a few 3-D charts, but most advertised 3-D features are related to the 3-D visualization of 2-D data.

Financial charting
Several chart types are specific to the financial industry; though some of them may be useful in other domains as well. These include candle, high-low, high-low-open-close, Kagi, Renko, box-and-whisker, point-and-figure, and three line break. In addition to these types, you may also be interested in built-in support for technical indicators such as Bollinger bands, MACD, and simple and exponential averages. Many high-end charting packages offer support for these and other technical indicators.

Statistical charting
If your work involves statistical analysis, built-in support for such analysis will come in handy. High-end charting packages typically provide support for calculations such as mean, median, standard deviation, variance, correlation coefficient, and covariance. Packages may also provide support for analysis of variance and displaying normal distributions.

Native support for dates
One of the most important and often absent features is native support for dates. Many charts on the market treat dates as doubles. This makes it very difficult to work with dates. If dates are natively supported, you should be able to specify axis intervals in terms of date intervals such as months and weeks. It will also be possible to easily format dates for display. This is a key feature that any chart you consider should have.

Annotations
Charts should provide for the display of annotations on any chart point. It should be possible to position annotations relative to data points or at an absolute position. A variety of different shapes and labels should be supported out of the box, and you should be able to provide your own shapes and labels.

Legends
Chart legends are important elements of charts. They greatly enhance their visual appeal and readability. You should be able to position legends at any location relative to a chart such as the bottom, top, left, or right. Some charts also allow for free positioning or floating.

All visual aspects of a legend need to be customizable. It should be possible to control the display of a series by using a check box or similar element associated with a legend item.

User interaction
When users interact with charts, they typically expect to see rich ToolTip information. Multiple ToolTip options should be supported out of the box. There should also be support for custom ToolTips.

Charts should also allow users to zoom in and easily control the zoom level. You should test zooming-related features carefully to see if the axes scale as expected when you zoom.

You should be able to interactively highlight a section of a chart. The selected range should be available for easy access from other code, including data-binding code. Users also need to move points and series when enabled. This allows you to enable users to interactively modify data, if this is a use-case specific to your needs.

Export
It should be possible to export the chart to common image formats such as PNG, BMP, GIF, and JPEG. High-end packages also allow for exporting charts to Microsoft Excel format. When exporting to Excel, be sure to test if the export is simple HTML (not a desirable feature since Excel will warn users that the file is not in the expected format) or a compliant and technically valid Excel file. Many packages that advertise Excel support provide simple HTML exporting, thereby providing a less than optimal user experience.

Serialization
There should be built-in support for serializing all chart setting data to XML or binary formats. There should be built-in support for versioning that will allow you to open older settings in newer versions of the chart control.

Pre-built configuration dialogs
Pre-built dialogs are similar to the chart settings dialog in Microsoft Excel. They allow end users to configure common chart settings. They take quite a bit of work to build and require you to understand the internals of the chart package. It is a big win if they are built-in.

Excel-like sparklines
Sparklines are tiny charts that display trends in Excel cells. Excel allows for thousands of sparklines to be displayed. Some charts support a sparkline display mode. Key aspects to look for are fidelity with the Excel look and feel and the ability to display hundreds if not thousands of these charts. Since sparklines are used to indicate micro-trends, they have to be resource friendly.

Localization
All images and text displayed by a chart should be easy to localize. Bonus points if there is built-in support for your commonly used locales.

Right-to-Left
It is usually possible to tweak axis settings to achieve a right-to-left (RTL) display. It is a plus if this support is built into the chart since there are always edge cases that you will have to deal with when limited to working with axis positioning only. If RTL support is baked-in, then aspects such as adjustment for proper RTL label display will also be built-in, saving you extra effort.

Viewport filters
One of the most popular charts in recent times is the Google finance chart. It combines two charts with one acting as a viewport filter. In the case of the Google finance chart, one chart serves as a date range filter. The other chart displays detailed information for the range specified by the viewport filter. This chart is a very friendly way to visualize a lot of data. If your users have not asked for it, they will ask for it at some point soon. This feature is possible to emulate with multiple charts if it is not built-in, but having it built-in will save a lot of time and effort.

Printing
There should be built-in support for printing and print preview. In addition, look for the provision of special color palettes for printing. For instance, if you will be printing in grayscale most of the time, it will greatly help to have support for a grayscale palette that you can switch to when printing.

Bio
I am Vice President of Product Development at <link removed>, a leading provider of components for Windows development. Before joining Syncfusion in 2001, I managed development teams at Rogue Wave Software.
Feb 15 '12 #1
0 3474

Sign in to post your reply or Sign up for a free account.

Similar topics

12
2328
by: Marc Ederis | last post by:
Hello, I'm having a problem with sending data with sockets over a dial-up connection. When I use the send function, it will happily send a buffer of a megabyte and more in one shot. But of course, the data is still in the network buffer... Meaning you can't disconnect for awhile (but for how long...). The problem is, how can I know when it's done? Is there a way to be notified when the data has truly been sent? I tried using...
20
2327
by: Simon Harvey | last post by:
Festive greetings fellow programmers! I've been programming now for about 4, maybe 5 years now. 4 of those years were at university so and I havent had much work experience of making real world applications (although I trying to make some now). There is still a lot I don't know when it comes to making programs. I know all the theory, but not how (and why) certain things are done in real world projects. My current ponderings are about...
1
1950
by: Amin Gunawan via .NET 247 | last post by:
I would like to put a combo box in a column of a datagrid. I've seen the samples in the MSDN library of other sources, butall samples didn't catch the 'DOWN/UP' keystroke. It means thatwhen I select an item in the combo box, I need to use my mousefor the selection. If I use the 'DOWN/UP' keystroke, the cell inthe grid move to the next or prev row in the grid. Anybody knows how to catch the down/up keystroke when selectingitems in the combo...
3
2303
by: Gidi | last post by:
Hi, Is it possible to know when TextBox loses focus to which object it lost it? what i mean is when the LostFocus Event occur is it possible to know which object got the focus instead? thanks,
10
7175
by: SStory | last post by:
How can the MDI parent form know when an MDI child closes? I need to know when the last one closes because I have something on the MDI form that I need to clear out when all children are closed... Thanks, Shane
6
1571
by: JohnR | last post by:
I'm running into a 'timing' or 'race' condition on my form. All textbox controls are bound to a datasource, but certain other controls (like labels) need to be updated when you move to a different record. In addition some of the databound controls need to be modified (ie: verified) based on the values of other databound controls. For example, if one checkbox is checked, then I need to ensure that another databound control has a certain...
9
1747
by: rickou812 | last post by:
What I am attempting to do is create a form field in which a company name can be selecting from a drop down box. When selecting I want to display the information from my database about the selected company. I am releatively new to php and mysql, but I have learned how to create, input, and display data, but can not seem to figure out how to do the above. I have a page at http://www.cashsurveysnow.com/company.php with examples of a drop...
8
1337
by: AAaron123 | last post by:
If IE is open I'd like my app to receive an event or otherwise know when IE receives a mouse click. Is that fairly easy to do? Thanks in advance
5
1509
by: sstory | last post by:
I have a class in vb.net that Inherits Generic.List(Of myclass) I want to have totals in this class that are static...i.e. not recalculated every time. They should be calculated once and never again unless the collection is modified, or the data in one of the objects in the collection is changed. How can I do this? Thanks,
0
1287
by: BigRedEO | last post by:
I am needing to SELECT all fields/records from a large table (96 columns, over 100 million records) into an outfile. I need to change any "NULL" to a blank. I can use "SELECT IFNULL(field_name,'') FROM table_name WHERE transDate = date INTO OUTFILE '/tmp/sample-file.csv' FIELDS TERMINATED BY '|';", but that only works by column name - it does not work for "SELECT IFNULL(*,'') FROM TABLE...etc". I cannot go through checking...
0
10681
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10481
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
12357
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
11741
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
11264
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
8883
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
1
6874
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
5074
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
4161
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.