Dive into data visualizations
- Make sure you completed the installation process, if you ran into issues try following the installation guide.
- Did you already create an app template in one of the previous tasks? Then you can continue to implementing the data analysis.
Set up the app template
When you start creating a new app the first thing you need to do is to create an app template. The required steps depend on the chosen installation method.
- Local development
- GitHub Codespaces
-
Open your Codespace if you don't have it open yet
-
In your terminal enter the following command and hit enter:
viktor-cli create-app --app-type editor
This will create all the necessary files in your app folder for you.
-
Install the app and it's dependencies and start it in your development workspace by using the following command in the terminal:
viktor-cli clean-start
If all went well, your app is installed and running in your development workspace:
INFO : __ __ __ __ __
INFO : \ \ / / | | | |/ /
INFO : \ \ / / | | | ' /
INFO : \ \/ / | | | <
INFO : \ / | | | . \
INFO : \/ |_| |_|\_\
INFO : _______ ____ _____
INFO : |__ __| / __ \ | __ \
INFO : | | | | | | | |__) |
INFO : | | | | | | | _ /
INFO : | | | |__| | | | \ \
INFO : |_| \____/ |_| \_\
INFO : VIKTOR connector vX.Y.Z
INFO : VIKTOR SDK vX.Y.Z
INFO : Connecting to platform...
INFO : Connection is established: <URL> <---- here you can see your app
INFO : The connection can be closed using Ctrl+C
INFO : App is readyDo not close the terminal as this will break the connection with your app.
-
Open your development workspace if you are not in it yet
You can now navigate to the URL shown in the terminal (as highlighted above), and enter your Development workspace by clicking the open button.
Would you like to watch a short video?
-
Create a new folder for your app
Add a new folder in your filesystem (e.g.
C:\Users\<username>\viktor-apps\my-app
) and open it in your code editor of choice
- VS Code
- PyCharm
-
In your terminal enter the following command and hit enter:
viktor-cli create-app --app-type editor
This will make all the necessary files in your app folder for you.
-
Install the app and it's dependencies and start it in your development workspace by using the following command in the terminal:
viktor-cli clean-start
If all went well, your app is installed and running in your development workspace:
INFO : __ __ __ __ __
INFO : \ \ / / | | | |/ /
INFO : \ \ / / | | | ' /
INFO : \ \/ / | | | <
INFO : \ / | | | . \
INFO : \/ |_| |_|\_\
INFO : _______ ____ _____
INFO : |__ __| / __ \ | __ \
INFO : | | | | | | | |__) |
INFO : | | | | | | | _ /
INFO : | | | |__| | | | \ \
INFO : |_| \____/ |_| \_\
INFO : VIKTOR connector vX.Y.Z
INFO : VIKTOR SDK vX.Y.Z
INFO : Connecting to platform...
INFO : Connection is established: <URL> <---- here you can see your app
INFO : The connection can be closed using Ctrl+C
INFO : App is readyDo not close the terminal as this will break the connection with your app.
-
Open your development workspace if you are not in it yet
You can now navigate to the URL shown in the terminal (as highlighted above), and enter your Development workspace by clicking the open button.
-
In your terminal enter the following command and hit enter:
viktor-cli create-app --app-type editor
This will make all the necessary files in your app folder for you.
-
Install the app and it's dependencies and start it in your development workspace by using the following command in the terminal:
viktor-cli clean-start
If all went well, your app is installed and running in your development workspace:
INFO : __ __ __ __ __
INFO : \ \ / / | | | |/ /
INFO : \ \ / / | | | ' /
INFO : \ \/ / | | | <
INFO : \ / | | | . \
INFO : \/ |_| |_|\_\
INFO : _______ ____ _____
INFO : |__ __| / __ \ | __ \
INFO : | | | | | | | |__) |
INFO : | | | | | | | _ /
INFO : | | | |__| | | | \ \
INFO : |_| \____/ |_| \_\
INFO : VIKTOR connector vX.Y.Z
INFO : VIKTOR SDK vX.Y.Z
INFO : Connecting to platform...
INFO : Connection is established: <URL> <---- here you can see your app
INFO : The connection can be closed using Ctrl+C
INFO : App is readyDo not close the terminal as this will break the connection with your app.
-
Open your development workspace if you are not in it yet
You can now navigate to the URL shown in the terminal (as highlighted above), and enter your Development workspace by clicking the open button.
Define the input fields
- The app will update automatically after adding your code and saving the
app.py
file, as long as you don't close the terminal. - Did you close your code editor? Use
viktor-cli start
to start the app again. No need to run the install and clear commands. - Once your app is started you will be able to interact with it in your Development workspace
During this task you will learn how to add graphs to your app. We will be creating a visualization to determine rental prices for a real estate development.
Open app.py
, this is where we will place all the code for our app.
We will begin by adding all the imports that we will need to the top of the file:
import numpy as np
import matplotlib.pyplot as plt
from io import StringIO
from viktor.views import ImageResult, ImageView
from viktor.parametrization import ViktorParametrization, NumberField, Text
To add the graph we will use Matplotlib, a well-known Python visualization library.
As we already determined that the materials and the ratio of offices to residential spaces will be
our parameters of choice, let's add them to the Parametrization
class.
You only need to add the highlighted lines of code.
class Parametrization(ViktorParametrization):
text_graph = Text('## Graph inputs')
percentage_green_energy = NumberField('Percentage green energy', variant='slider', min=0, max=100, default=50)
weight_sustainable_materials = NumberField('Weight of sustainable materials', variant='slider', min=0, max=100, default=70)
As you can see the Text
parameter became a nice title for our parameters and the two NumberField
s are
modified to be sliders and can be between 0 and 100.
Open or refresh your app in the browser, it will look something like this:
Let's add the graph
In our Controller
class, add the highlighted lines of code:
class Controller(ViktorController):
label = 'My Entity Type'
parametrization = Parametrization
@ImageView("Graph", duration_guess=1)
def starter_guide_graph(self, params, **kwargs):
fig = plt.figure()
svg_data = StringIO()
fig.savefig(svg_data, format='svg')
return ImageResult(svg_data)
We now have a template to make our graph.
When you open or refresh your app in the browser, this will show up as a blank canvas.
To make the graph we will first use numpy
(another well-known Python library for scientific computing) to define the range and then use
an equation to calculate the potential revenue. You only need to add the highlighted lines of code.
@ImageView("Graph", duration_guess=1)
def starter_guide_graph(self, params, **kwargs):
fig = plt.figure()
# Define the ranges for office and sustainability
office = np.linspace(0, 100, 101)
sustainability = np.linspace(0, 100, 101)
x, y = np.meshgrid(office, sustainability)
# Calculate revenue per square meter
rev_per_sqm = x + params.weight_sustainable_materials / 100 * y + 0.5 * params.percentage_green_energy
# Plot the surface
plt.imshow(rev_per_sqm, extent=(0, 100, 0, 100), origin='lower', cmap='RdBu', aspect='auto', vmin=40 ,vmax=240)
plt.colorbar(label='Avg. revenue per m²')
# Set title and axis labels
plt.title('Average rent per square meter')
plt.xlabel('Percentage offices')
plt.ylabel('Percentage sustainable materials')
svg_data = StringIO()
fig.savefig(svg_data, format='svg')
return ImageResult(svg_data)
As you may have noticed, we have added a title, axis labels, and a legend to inform the user.
Change some of the input values to see the effect on the resulting visualization! How does this work?
The inputs you defined on the Parametrization
are passed to the ImageView
method with the params
argument.
For example, to use the percentage of green energy in the revenue calculation you reference it by its variable name
params.percentage_green_energy
.
Nice! You now know the basics of adding matplotlib graphs to your apps. Do you want to learn how to add an interactive graph? Check out this tutorial.
Continue the next section or come back tomorrow to spread the workload!