1 2 3 4 Previous Next

Qlik Design Blog

55 Posts authored by: Arturo Muñoz
Arturo Muñoz

Introducing qdt-theme

Posted by Arturo Muñoz Apr 24, 2018

On the demo team we have been very busy lately working in some cool stuff for the community, qdt-components is a notable example of our commitment and contributions to the Qlik Community.

 

With the announcement of the new theme capabilities that were added to Qlik Sense in the February release we wanted to extend our involvement with you all by sharing a custom theme we developed internally for you.

 

The qdt-theme is a curvy, bolder theme that significantly modifies the default look of Qlik Sense Desktop. Our goal was to create an appealing theme that you all can use right away, but more importantly we wanted it to be a theme for you to modify and extend as well.


In qdt-theme we changed font types, font sizes and a variety of styles including the current selection bar to make it fit in the new color scheme. Also, we incorporated lots of color palettes (borrowed from other themes, thank you) so you have a wild variety of schemes to choose from.


bp1.png


bp2.png


You can check out the qdt-theme library at our Demo Team's GitHub: https://github.com/qlik-demo-team/qdt-theme.

 

Hopefully you find it useful.

Enjoy it!

Sometimes the secret sauce of a successful data visualization project lies in the correct choice of the visual object(s) that represents the data. Factors like picking the right chart, placing it in the right spot, and user interaction are key to make a data piece memorable, insightful, and truthful. However, on other occasions, the key to success is to “simply” make data available, this is particularly true for data that was previously inaccessible to most of us.

 

An example of this is our latest project. We partnered with Canadian National Post to, for the first time, make available over 6 million donations made on a national scale during the last 25 years.

 

intro.png

 

In the last decade, open data has been a hot topic for governments all over the world, but open or public data isn't necessarily easy to access. That’s especially true when it's data that can help citizens to understand and track how our politicians’ campaigns are funded.

There are no consistent rules — or penalties — for political financing across Canada. Spending limits, out-of-province and foreign gifts, money from unions and corporations, donations from numbered companies: in some places anything goes, in other regulations are rarely enforced.

 

For Qlik one of the project main challenges was the data cleaning and normalization process. The project contains more than 25 different data sources. We fixed some of the most obvious issues with data, please read the methodology page (http://special.nationalpost.com/follow-the-money/methodology), but we also wanted the data to show how it was originally recorded without any makeover. It’s common to find small variations in names across the app, for example chances are that the donor names ‘Justin Trudeau’ and ‘Justin P.J. Trudeau’ belong to the same person also known as Justin Pierre James Trudeau.

 

We ended up having a large app holding around 6.5 million rows of data (at the time of writing) and a clear goal, make the data searchable. Anyone should be able to find individual donations and get some information about the shape of the data.

 

We used enigma.js to interface our Qlik Engine API and React to build the user interface. We created a powerful piece that displays millions of rows of data in the blink of an eye. React.js is designed to work with simply reacting to changes in data, and its super-efficient diffing algorithm makes DOM updates super-fast resulting in a blasting fast experience.

 

table.png

 

The main table displays the more granular level of data including individual donations and all the relevant details. To show the complete 6.5 millions of rows we use virtual scrolling and paging. The table is getting new data from the server as users scrolls the table.

 

We also included two bar charts to ease the data profiling task, compressing down millions of rows to a few bars. Lastly we use two small tables to illustrate the top donors and donations so the readers who are interested only in the super donors have a quick way of finding the information in the table.

 

 

bottom_table.png

 

 

Check the online version here Follow the Money - Political Donations Database | National Post

 

AMZ

Custom Themes is one of the new features shipped with February release so make sure you are updated before trying to come up with your own.

 

To create a new theme, first we need to understand what exactly is a theme and what it can do for us. A custom theme is a collection of files stored in a folder, it must contain a definition (QEXT) file, a main JSON file, and optionally any other assets you might need to support the custom theme such as CSS files, custom font files, images, etc.

 

Custom themes let users to quickly apply different levels of customization to their apps, some of you might be interested in having your custom color palletes, while someone else might just need bigger font size, both can be achieved with Custom Themes. Theme authors can target individual visualization objects via JSON and/or use a custom CSS to modify the sheet styles.

 

From Qlik Help

 

The custom styles can be defined in two ways:

  • In the JSON file you define the style for the individual visualization types, for example bar charts and line charts.
  • CSS styling is more general and flexible. You can, for example, style sheets, visualizations and extensions.

 

Creating a simple custom theme

 

I'll be using Qlik Sense Desktop for this example, please check the help page for instructions on how to install a Custom Theme in Qlik Sense Server.

 

  • Go to your extensions folder: C:\Users\[username]\Documents\Qlik\Sense\Extensions
  • Create a new folder, I'll call mine theme-helloworld
  • Create a new file and rename it to theme-helloworld.qext. The QEXT file is a definition file that contains a few lines, where only name and type are the only mandatory lines.

 

{
  "name": "Hello World theme",
  "description": "My first custom theme",
  "type": "theme",
  "version": "1.0.0",
  "author": "Arturo Muñoz"
}




 

  • Now, it's time for the JSON file. Create a new file, name it theme.json
  • Edit the theme.json file with your favorite text/code editor
  • My advice is to start your theme with the sample code you can find in Qlik Help so you can familiarize with JSON and it's properties:

 

{
  "_inherit": true,
  "_variables" : {
    "@greenColor" : "#61a729",
    "@text": "#4c4c4c"
  },
  "color": "@text",
  "fontSize": "12px",
  "object" : {
    "title": {
      "main": {
      "fontSize" : "16px"
      }
    }
  },
  "dataColors": {
    "primaryColor": "@greenColor"
  }
}




 

  • The JSON file will change the primary color of your charts from Qlik dark blue to the custom green as defined in the variable at line 4 and will also modify the charts title to a font size of 16 pixels.

    This is a simple example but there are much more you can do with the JSON file, you could for example, define new color schemes for measures, change the axis', labels, legends font size and color and much more.

    Actually you could even load your custom CSS through the JSON file so you can target and hack any predefined style within your app, so you could modify object paddings, change font family, and so forth.

 

If you've followed the steps above you should have something like:

Custom-Themes.png

How to activate a Custom Theme?

 

Check how to apply a Custom Theme to your app in the animation below

 

CT.gif

 

 

 

Tips from the expert... and theme sharing!

 

I've asked my colleague Nabeel Asif for some tips since he created the Custom Theme based on Color Brewer that we are sharing  today (check the attachements). This is what he said:

 

All of our standard themes just give one sequential and one diverging gradient for measures, and two color schemes for dimensions. But you can actually define as many options as you like through the “scale” and “palettes” properties in the theme’s JSON.

 

For sequential and diverging gradients, Qlik uses seven colors to define a scheme. But you don’t actually need to specify all seven colors. Just define the two colors at the extremes, and Qlik does a nice job of calculating the rest. Of course, if you want very specific colors you can define them yourself.

 

Often apps will be designed with red representing something bad or dark colors representing higher values. To maintain this look as the user switches themes, you should follow these conventions in the JSON:

  • Diverging scales should be ordered from reddish hues to bluish hues.
  • Sequential scales should be ordered from dark to light. 

 

Please don't forget to always check Qlik Help for the most recent specifications.

 

Enjoy

Qlik String functions are an extremely handy set of functions to clean, manipulate, and ultimately normalize data before (or after) loading it into an app. String functions ‒ Qlik Sense

 

I was working with a new data set recently, among other fields the data set contains addresses, something like this:

 

Abbey Road, London

 

Since the data set doesn’t have a dedicated city field I decided to apply Subfield() to extract the City as a separate field. Easy task, right? I use the comma as a separator to split the string.

 

…
Subfield (address, ',', 2) as City,
…








 

Shortly after we decided to expand the data universe of the app to include other countries in our analysis, we ended up having multiple sources with slightly different address formats:

 

Abbey Road, London

Paseo del Prado, s/n , Madrid

91, Rue de Rivoli, 75001, Paris

 

Not great news, right? Due to the variable number of commas in the address field I can no longer use subfield to manipulate the string, or maybe I still can use it.

 

Searching from the end of the string

 

Subfield function not only takes positive values for the third parameter, it also accepts negatives values. A negative value searches from the end of the string. This will help us to extract the City while keeping my script highly readable. The new function will be something like:

 

Subfield (address, ',', -1)








 

The function above will return the first portion of the string separated by the delimiter comma (',') searching from the end of the string, right to left. The newly created "City" field contains:

 

     London

     Madrid

     Paris

 

Right to left search in String functions


The use of negative values, or right to left search (remember the read will still be performed from the start of the string) also apply to other string functions:


  • Subfield

    Subfield('Abbey Road, London', 'o',-2) 

    Returns 'nd' (the second occurrence of 'o' starting from the end)

  • Index

    Index('Abbey Road, London', 'o',-2) 

    Returns 14 (the second occurrence of 'o' starting from the end)

  • FindOneOf

    FindOneOf('Abbey Road, London', 'oes',-3) 

    Returns ‘8’ because the search is for any of the characters: o, e or s, and "o" is the third occurrence starting from the right, and is in position 8 starting from the left.

 

I hope you find it as useful as I do.

AMZ @arturoqv

It's time for the end-of-the-year in review post, it's time for the cream of the crop.

 

During 2017 six main authors and a respectable number of guest bloggers posted a total number of 85 articles (plus this one).

 

We wrote 39,822 words (7,819 distinct words), that’s 15% more than the number of words we wrote previous year. We wrote the word “Qlik” 566 times, an absolute record. You contributed 695 times to the success of this blog in the comments section, we truly appreciate your feedback and comments!

 

1.png

 

Most popular posts in 2017

 

Most read/visited posts

Don't be the last one to read it!

 

  1. Qlik Sense September 2017 - What's New
  2. Quotes in Set Analysis
  3. Push the Boundaries of Analytics - Qlik Sense Bot (video)
  4. Take a look at Qlik Sense June 2017
  5. Introducing DAR mashup template

 

Most commented posts of the year

Everyone is buzzing

 

  1. Quotes in Set Analysis
  2. Introducing Qlik Sense 3.2
  3. Take a look at Qlik Sense June 2017
  4. Qlik Sense September 2017 - What's New
  5. Push the Boundaries of Analytics - Qlik Sense Bot (video)

 

The underdogs 2017

They worth a second read.

 

  • Qlik Sense WordPress Plugin
    The world most popular CMS and the most powerful Analytics platform combined? it seems like a perfect match. This blog post is capturing a lot of comments, check it out and join the conversation.
  • Rank Function
    Some of the old Qlik functions still have secrets, check this post to learn what you are missing from the Rank function.
  • Intro to Qlik Open Source Software
    It feels great to contribute to the Open Software community, read what Qlik has to offer!
  • Salesforce and CIO dashboard mashups available to the public
    You can use these examples as templates or just dissect them into pieces to learn more about Qlik APIs and how to build impacting data sites.

 

 

I wish you an enjoyable New Year countdown!

Arturo (@arturoqv)

Since the introduction of Data Manager (the Data manager is where you visually add and manage data from your own data sources, or from Qlik DataMarket, so that you can use it in your app) Qlik has been constantly improving the set of features that makes the task of loading data an enjoyable part of the analysis process.

 

One of the most recent (and genius) additions to Data Manager is the “Summary card

 

 

1.png

 

So what is the Summary card?

 

Summary data profiling card is a visual representation of your data. It contains a set of elements, values and charts, that let you better understand each field in your data set.

 

Summary card has been designed to help you anticipate and prevent data quality issues before loading data into Qlik Sense. The Summary card content adapts to the field selected, so depending on the column data type, measure, dimension, or time it will present you with different insights.

 

For measures the following information is provided

  • Field name
  • Field type
  • Distinct Values
  • Total Values
  • Preview of the distinct value distribution in a bar chart showing the 20 highest count elements.
  • Value Range. It is a very interesting chart itself, for a measure field it will show a distribution chart showing the Min, Median, Average, and Max values for the field.
    If a temporal field is selected the Value Range will display the first and last date in the range.
  • Null Values and Mixed values charts only appears based on the field data.

 

5.png

 

How to access the Summary card

 

To see and use the Summary card by yourself you have to get to Data manager, In Data manager, select a table and click the pencil icon, then select a table field and the Summary card appears. Or just check the animation below:

 

dp2.gif

 

Enjoy it!

Arturo (@arturoqv)

One of our new additions to the charts library is the Waterfall chart. It’s useful to visualize how an initial value evolves (increment or decrements) over time or in distinct stages. It’s widely used across companies and finance analysis seems to be a good fit for the waterfall chart. We commonly see this type of chart for Income or Cash flow statements.

 

0.png

 

 

How it works?

 

Qlik Sense waterfall chart is a simple non-dimensional chart, it’s composed by expressions only. Each measure can be configured to “Add”, “Subtract”, or “Subtotal”. Meaning we have total control over the graphical representation of the values, we could tell a positive number to subtract its value from previous column and viceversa.

The Income Statement example

 

The CFO of the company Fitness Equipment Limited (from Wikipedia) wants to visualize and analyze its company income statement by year.

 

1.png

 

 

After getting the data into Qlik Sense (one table with three columns, Concept, Year, and Amount) it's time to represent the Income Statements table above with a Waterfall chart. Remember, the goal is to show the profit (or loss) for the year amount, but more importantly how was the flow to get to that amount.

 

Creating the chart

 

  • In edit mode, drag and drop the new Waterfall chart into the Qlik Sense app
  • Add the first measure, it will typically be the starting amount or opening value. Revenue will make it in our example.
    Sum({<Concept={'Revenue'}>}Amount)
  • Add as many measures as you need to complete the individual contributing amounts. In our example:
    • Cost of Sales
    • SGA expenses
    • Gains from disposal of FA
    • Interest expense
    • Income tax expense

Subtotals

 

For those balance measures and those amounts that denote subtotals such as Gross Profit or Operating profit we don't need to create an expression, we just need to check the subtotal checkbox in the preceding measure.

For example, to calculate Gross Profit (Revenue - Cost of Sales) check "Subtotals" check box in Cost of Sales measure and set the "Subtotal label" to Gross Profit. Perform the same operation for all of the balance points in the chart.

 

Spicing it up

 

Waterfall chart comes with the usual customization panels as seen in any other Qlik Sense chart, but this time we have a dedicated Color section that includes a color picker for each one of the bar types that inhabit your chart.

 

The final waterfall chart looks like the picture below. It includes a year list box so now the CFO and any user will be able to quickly  visualize different years of Income Statements to analyze how each piece contributes to the total profit.

 

3.png

 

This is just an example of what a Waterfall chart can do for your business but I'm sure there are many more use cases for it, please share your experience with Waterfall chart in the comment section below.

 

Enjoy it!

Arturo

 

PS: Find attached the Qlik Sense with the examples shown in the blog post

My previous post versed about what I think it is a very interesting use case of Set analysis element function P() to create dynamic sets and how to operate with those sets to solve really complex analysis scenarios in an easy and elegant way.

 

In the comments section of that post, I got a couple of questions regarding one of the charts we used in our web app, the so-called Tornado Chart. This post goes to answer that question by showing how to create a Tornado/Butterfly Chart.

 

Step by step guide:

 

Note: For the following example I got a sample data containing Population by Age data from the US census. It has 3 columns, Age Range, Male population and Female population.

 

  1. Drag and drop a bar chart to your sheet.
  2. Add a dimension.  I’ll add Age Range to mine.
  3. Add two expressions. I need one expression to display female’s population and a second one for males.

    At this point, my chart looks like this:

    5.png

  4. Next, we will adjust the bar chart sorting and appearance.

    Sort the chart according to your data. For this data set my best option is to sort Age Range using load order, to do so, move Age Range to the top and then uncheck all the sorting options to sort on load order.
    In the Appearance section of the chart property panel, switch Presentation to Horizontal and Stacked and set Value labels to Auto.

    6.png
  5. Now we need to figure out how to “move the y axis to the center of the chart". To do so I’ll transform the data to make Female population negative by changing my expression to: Sum(FemalePopulation)*-1

    7.png

  6. My chart looks almost right but there’s still a detail that doesn't fits well in the picture above. Note that the value labels for Female Population are displayed as negative numbers. While technically correct, it doesn't work for this chart, I need it to be displayed as positive vales as well.

As a general note remember we can set up the format for positive and negative values for any expression. Format argument in the Num function can take 2 parameters, first one indicates how to format the number if it is >0 and the second piece if number <0.

=num(sum(x), 'postivenumberFormat;negativenumberFormat')

 

As I want negative and positive number to look exactly the same I could use the following format arguments:

 

num(sum(FemalePopulation)*-1,’#,##0;#,##0’)

 

8.png

 

 

Note: Please be aware of some potential issues when exporting the chart as data since the resulting file could contain negative values.

 

Enjoy it.

A few months ago we at the demo team accepted the challenge to create a prototype for the healthcare industry. The goal was to create a user-friendly way to analyze a huge dataset provided by one of our healthcare partners, DarkMatter2bd. They carefully explained to us some usage cases for their data and we agreed to create a mashup to analyze and visualize “comorbidity”.

 

So what does comorbidity means?

 

In medicine, comorbidity is the presence of one or more additional diseases or disorders co-occurring with (that is, concomitant or concurrent with) a primary disease or disorder; in the countable sense of the term, a comorbidity (plural comorbidities) is each additional disorder or disease.


Source: Wikipedia

 

 

If you are in the healthcare industry then I am sure you have heard someone asking something like: can you show me patients that have X and Y and Z? To answer that question and some more we came up with a new mash up called Pre-launch Targeting & Clinical Trial Recruitment. It contains non-real data for almost six hundred thousand patients located in the state of Pennsylvania.

 

When a user gets into the mashup we prompt them with a search box that performs a search across the entire range of diseases or disorders available in our data sample. Once the user has chosen a primary disease we take them to the Recruitment page where data can be freely explored and analyzed, and more importantly, where more disorders or diseases can be added to the query.

 

Real use case scenario.

 

An imaginary healthcare company is planning to launch a new drug for people suffering from diabetes and they need to find a group of patients that meet some requirements. They must have diabetes and must have hypertension but must not be allergic to penicillin.

 

step1.png

After we search for diabetes we get to a count of 62,861 patients in our data. It represents approximately a 10% of our sample. Next  is time to search for hypertension. We will add a second condition to our query.

 

step2.png

 

The inclusion of hypertension draws 42,491 patients that suffer from both diabetes & hypertension.

 

Our last search will be penicillin intolerance. Please notice that by default our mashup will add new search terms with AND condition to the query. The count of patients temporarily reflects 113 patients for the combination of diabetes AND hypertension AND penicillin allergy. Users can freely switch any condition to AND NOT by clicking into the tag. By doing so in the "Personal History of Allergy to Penicillin" tag we end up having a result set that matches our initial request, resulting in 42,378 patients with diabetes AND hypertension AND NOT penicillin allergy.

 

step3.png

 

Set analysis element function P()

 

The secret sauce in our recipe is the Set analysis element function P(), it helps us to create subsets of data which we can operate with.

 

We basically want to count patients where disease = X and disease = Y. If we use Qlik notation for that condition would look like:

 

Count({<patient = P({<disease={'X'}>}patient) * P({<disease={'Y'}>}patient)>} distinct Patient)




 

The expression above will create two sets, P({<disease={'X'}>}patient) will contain all the possible patients that have disease = X, while the second piece P({<disease={'Y'}>}patient), will retrieve all the possible patients with disease = Y. Finally the " * " operator will calculate the intersection of both sets.


The webapp Pre-launch Targeting & Clinical Trial Recruitment dynamically creates as many P sets as needed and the right operator to compose the right expression.


If you want to learn more about Set Analysis please check this posts:


Why is it called Set Analysis?

A Primer on Set Analysis

Natural Sets

 

I hope you like Pre-launch Targeting & Clinical Trial Recruitment

 

Arturo (@arturoqv)

Continuing with the description of the new charts available in the Qlik Sense June 2017 release, today is the Box plot’s turn.

 

The American mathematician John W. Tukey introduced the box-and-whisker plot (called simply a box plot) in his 1977 book, "Exploratory Data Analysis".

 

Like the Distribution plot, the Box plot is a histogram-like method of displaying data and is appropriate to represent the degree of dispersion, skewness, and whether there are potential unusual observations in the data set. It’s particularly useful for comparing distributions between several sets of data, short of having several histograms close to each other so you can compare across them. The data center, spread and overall range are immediately apparent for each data set.


In my previous post about the distribution plot, I used an example data set containing data for 3 salespersons recording their monthly sales data. I'll reuse that data to illustrate how the box plot works.


1.png



A Box plot will typically help us to visualize 5 numbers, the statistical median represented as a horizontal line inside the box, the box ends show the first and third quartiles values. The whiskers indicate the range of the data and they are represented as horizontal lines ending in a small vertical line. Whiskers extend to the farthest points that are not outliers. Depending on the box plot configuration you choose, a provision is made for the representation of extreme values, typically upper/bottom quartile range +/- 1 x interquartile range or IQR. Additionally, outliers or extreme values are represented with dots.


2.png


Some general observations about our salespersons’ box plots:

  • The box plot is comparatively short – see Sheri. This suggests that overall monthly sales have a high level of similarity with each other.
  • The box plot is comparatively tall – see Dani. This indicates Dani’s monthly sales are quite different across the year.
  • The box plot is skewed – see Dani. There are more data points on the left/bottom (toward lower values), most of Dani's sales are small amount of sales.


To get the chart working in your Qlik Sense app it only requires one dimension (add a second dimension to compare across it) and one expression. Qlik Sense's new Box plot offers three standard presets, standard (Tukey), percentile-based, and standard deviation. For those of you with special needs or for those interested in learning more about fine tuning your chart, there’s a manual mode that give us full control over each one of the chart elements.


6JiB6eH.png


Enjoy it.

Arturo (@arturoqv)


The Qlik Sense June 2017 release came with a bunch of new visualizations, distribution plot is one of the new objects available to drag and drop into Qlik Sense. Let’s use an example to check what a distribution chart can tell us that was previously hidden from our eyes.

 

I’m going to use a very simple example of sales data, it contains 3 sales rep and monthly sales that extends over a year. We want to see how our reps are preforming over the year by observing some execution indicators such as total sales and average sales.

 

table.png

 

In our not-so-random example data, sales are even for the sales team. As you can see in the picture below, their aggregated numbers are almost identical.

 

barchart.png

 

Average is just not enough to see how sales rep are performing, we need more granularity if we really want to understand how the sales process works. To do so we could try to include months and maybe use a different visualization object like a line chart.

 

linechart.png

 

Line chart will help us to see sales with a temporal component, I see how both Jerry and Sheri have a very regular sales process over the months while Dani's go all over the board with excellent months and not so great ones.

 

Distribution plot can help me to get a better picture of our sales by giving us a glance of data dispersion.

 

distributionplot.png

 

I see that despite having the same yearly sales amount and sales average the actual distribution over time is quite different from each other.

 

Jerry has tight sales performance month to month with all the points(months) falling in a compact cluster. Sheri meanwhile has a very tight bucket of dots a little over $150 but also a couple of months that could be considered as outliers. That is valuable information that wasn’t obvious only attending to the line chart.

 

Dani's sales don’t follow the pattern described by the other two individuals. For Dani, monthly sales range from $0 to $600 is either an excellent or a terrible month. Any company will be happier with a more consistent sales performance and our imaginary company is no exception to that. By learning how each one of the sales team performs we can take the necessary actions to help Dani to be more reliable.

 

As we have seen similar yearly sales and identical sales average could hide some valuable information, there’s a story in your data that needs to be discovered.

 

Enjoy it,

Arturo (@arturoqv)

Guided apps are probably the more common data viz pieces nowadays. Are strongly influenced by the traditional journalistic approach to a story and related with storytelling. The goal of guided apps is to walk the reader from point A to point Z.

 

A well-constructed guided visualization is incredible powerful at proving a point, examples can be found almost daily at mass media websites. As a data professional, I love data stories but maybe because I’m such a data geek I usually never get completely satisfied by the visualizations used to emphasize the story. I almost always hungry for ways to explore the data or I simply miss one angle from the story to feel fulfilled.

 

On the other hand, the so-called Discovery apps are intended to let the user to manage the ride and rely on reader capacity to be able to interact and to understand the data they are looking at. Scenarios with simple and familiar data are generally more appropriate for discovery apps.

 

We recently got one of those great data sets for discovery, simple data and containing thousands of potential stories in it. Barcelona Marathon organization contacted us to create a piece to let runners (data users) to explore every corner of their data. They have been collecting runners’ data during the last decade, our part was just to put a nice wrap around it. We like to see it as a nice hybrid (more on the discovery side) of guided and discovery app.

 

barcelonaMarathon.png

 

 

We divided the mashup into three sections trying to help first time users to better get familiarized with the data. It’s just a visual separation of the data, each section belongs to the same data model, filters are global and every selection affect all the charts. For the clarity of it we reduced the use of set analysis as much as possible.

 

The app starts with race overview data, about participation and finishing times. The second section serves as demographic info, with three main characteristics to consider, age, sex and nationality. Finally, we reserved a little bit of complexity for the very last section, we called it Performance. As you can see in the picture below taken from the chart “Avg time by age” the sweet spot age for someone to run this marathon is 35 years old, in average people in that age get the best results.

 

avg time by age.png

 

You can check the mashup live at Barcelona Marathon page here or as a stand-alone version at Marató Barcelona.

 

Regards,

Arturo Munoz (@arturoqv)

A few weeks ago, we got into a new project to create an interactive piece with the Canadian media, National Post. The goal was to illustrate the donations candidates of the Conservative Leadership Race received from the start of the race through March 2017. Qlik Sense was integrated with Qlik GeoAnalytics to visualize where the donations were coming from and which candidates received the most donations in each area.

 

The map below was one of our first tries, we decided to use color to illustrate the top candidate by amount collected, and by postal code.

 

1.png

 

Problem with this approach appeared obvious at a first glance, postal codes areas have an insane size variance, regions such as the northern and barely populated province of Nunavut extents thousands of square miles in just one postal code while postal areas in urban zones, such as in Toronto, span a few city blocks and are hidden in the map.

 

So, how to make Nunavut and Toronto visible and comparable?

 

We decided to apply a binning operation to our data to solve most of the issues described. Qlik GeoAnalytics has a wizard that lets you chose operation, making the process seamless. The result is a new table containing squares (or hexagons) geo-polygons.

 

6.png

 

 

Conservative.gif

 

In this new map version, readers can compare areas easily without the distortion introduced by the different postal code sizes, letting us to see what’s going on in Toronto and in Nunavut at the same time.

 

We've added some extra cool features to the resulting Qlik Mashup. I recommend you to visit it and explore it at http://news.nationalpost.com/news/qlik

 

Enjoy,

AMZ

A few days ago I stumbled upon one of those little tricks that we all love. Roland Vecera came up with a nice solution to bring minicharts to Qlik Sense. It can help us to increase app data density and make our Qlik Sense tables sexy and informative again. Don't forget to add this to your bookmarks!


example.png


In Roland's blog post you will find instructions about how to build a linear gauge, a traffic light gauge, and even whiskers minicharts (right table in the image above),


I particularly like the linear gauge, with this technique we can now simulate small bars that goes along with each one of the table dimension items. The expression used to create the linear gauge 'bar chart' is actually reusable and very simple, looks like this:


repeat('█', rangemax(rangemin( ceil(((column(1)/column(2))-1)*10),10),1) )


The expression will paint a variable number of solid blocks █ based on a given calculation that is evaluated by row. By now you should have a nice grey bar from 1 to 10 blocks.


Next (optional) step is to apply color to it. You could add color based on any criteria you want, in the chosen example Roland is using color in the same way as he use size, both display Growth.


The text color expression looks like this in the example:

 

if(expression>2, argb(255,0,150,0),

     if(expression>1, argb(255,0,200,0),

         if(expression>0.5, yellow(),lightred())))

 

Where expression will be the same expression as in Growth column (Steigerung).

 

You can read more about minichars in tables trick at QlikView + Qlik Sense Blog von Heldendaten: Qlik Sense Calendar Measures & "Minicharts" in Tabellen

 

Hope you like it.

AMZ


PS: For those of you who can't read German and/or use Google translator, please check out this community doc Creating Mini Chart in Qlik Sense tables (it also contains some hacks to make this trick even more complete)

It’s been a while since the last time we covered an extension in this blog, this time I would like to introduce ColorStyler by Johannes Sunden jsn .

 

Map_GradientTheme.png

 

 

The reason I found ColorStyler very special, besides its obvious value, is due the way this extension was built. It’s half an extension half a mashup or should I rephrase it as a “mashup that extends your Qlik Sense app”.

 

ColorStyler as you might have figured out by now is a coloring extension, it will let you preview and apply different color schemes to your charts, no coding is required, it will take care of the not-so-easy task of creating a ColorMix expression for you.

 

Once installed in your computer, ColorStyler sets up a mashup that will let you interact with the available apps and apply some color options to your charts.

 

To start working with ColorStyler you must pick an app from a list of your available Qlik Sense apps, then you will be presented with a list of available visualizations (as of today it only loads Master Items), and finally ColorStyler will offer you four main color categories to pick from.

 

I find very useful the gradient options, and especially gradient themes, it’s a good selection of nice and safe colors palettes. If you are not happy with the proposed themes you can always create your own by defining the gradient colors.

 

It’s quite interesting to see the chart update on real-time and compare how different color alternatives affect to our ability to read the visualization. Once you’re happy with your color selection you just need to “Save Changes” to make it persistent not only in the mashup but in the actual Qlik Sense app.


As I mentioned before,ColorStyler will only let you interact with Master Visualizations from your Qlik Master Items library so you must have at least one master object in your app to be able to use this tool. After applying color to your master item, you can edit it as normal in your Qlik Sense client and copy the generated expression (ColorMix1 or ColorMix2) and then apply it to any other visualization.


Note: I would recommend to be extra careful when applying colors to charts by dimension, it’s very important to use color with care, just remember color in data visualization should be used to convey information, and not as decoration. Also, is very important to make sure that a dimension chosen color will be applied consistently across your app, avoiding situations where the same dimension value has two different colors in two charts.


For latest version and technical questions please check Qlik Branch project page: Qlik Branch

 

If you prefer to watch a video instead:

Filter Blog

By date:
By tag: