Pre loader

Tag: FastHeatMapRenderableSeries

Welcome to the SciChart Forums!

  • Please read our Question Asking Guidelines for how to format a good question
  • Some reputation is required to post answers. Get up-voted to avoid the spam filter!
  • We welcome community answers and upvotes. Every Q&A improves SciChart for everyone

WPF Forums | JavaScript Forums | Android Forums | iOS Forums

1 vote
9k views

Hi,

I have 3 questions regarding the FastHeatMapRenderableSeries

First, I would like to ask whether it possible to use the transparent color FastHeatMapRenderableSeries, even when the map itseft is opaque (Opacity=1)? I tried to include the transparent color into the ColorMap gradient brush, but then the corresponding data values are shown in white.

Second, when the heatmap is scaled, the semi-transparent cell borders are visible on the heatmap. Can I get rid of them, for example, with the UseLayoutRounding or proper scaling?

Finally, if I continuously refresh the heatmap with incoming data, I see some rendering artifacts in some frames. The artifacts are usually black vertical stripes or, more rarely, rectangles. Can it be related to graphics hardware?

I made a screenshot demonstrating all 3 problems and attached it here.

Thank you very much in advance!

Ilia

  • corvex asked 9 years ago
  • last active 9 years ago
0 votes
9k views

I have created a heatmap chart with values for the data series with four vertical lines of width 1. When the width of data series is smaller than width of SciChartSurface in pixels the four lines are clearly visible. However when I increase the width of data series to be bigger than the width in pixels, then some lines disappear, even though I’ve set the re-sampling mode to ResamplingMode.Max.

I wasn’t able to attach images to the post (got a Forbidden error), so I’ve uploaded them to Imagur:
Missing Lines
Visible lines

Here is the code from which the screen shots were made:

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import com.scichart.charting.model.dataSeries.UniformHeatmapDataSeries
import com.scichart.charting.visuals.SciChartSurface
import com.scichart.charting.visuals.renderableSeries.ColorMap
import com.scichart.data.numerics.ResamplingMode
import com.scichart.drawing.utility.ColorUtil
import com.scichart.extensions.builders.SciChartBuilder
import kotlin.math.roundToInt

const val WIDTH = 2000
const val HEIGHT = 50

class MainActivity : AppCompatActivity()
{
    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)

        SciChartSurface.setRuntimeLicenseKey(getString(R.string.sciChart_license))
        SciChartBuilder.init(this)

        setContentView(R.layout.activity_main)

        val chartSurface = findViewById<SciChartSurface>(R.id.chart)
        val chartBuilder = SciChartBuilder.instance()

        val xAxis = chartBuilder.newNumericAxis().build()
        val yAxis = chartBuilder.newNumericAxis().build()

        val dataSeries = UniformHeatmapDataSeries<Int, Int, Int>(Int::class.javaObjectType, Int::class.javaObjectType, Int::class.javaObjectType, WIDTH, HEIGHT)
        for (x in 0 until WIDTH)
        {
            for (y in 0 until HEIGHT)
            {
                val value = when (x)
                {
                    0,
                    (0.25 * WIDTH).roundToInt(),
                    (0.5 * WIDTH).roundToInt(),
                    (0.75 * WIDTH).roundToInt() -> 50
                    else                        -> 0
                }
                dataSeries.updateZAt(x, y, value)
            }
        }

        val series = chartBuilder.newUniformHeatmap()
            .withDataSeries(dataSeries)
            .withColorMap(ColorMap(intArrayOf(ColorUtil.DarkBlue, ColorUtil.CornflowerBlue, ColorUtil.DarkGreen, ColorUtil.Chartreuse, ColorUtil.Yellow, ColorUtil.Red), floatArrayOf(0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f)))
            .withResamplingMode(ResamplingMode.Max)
            .build()

        chartSurface.suspendUpdates().use {
            chartSurface.xAxes.add(xAxis)
            chartSurface.yAxes.add(yAxis)
            chartSurface.renderableSeries.add(series)
        }
    }
}
1 vote
6k views

I have been reading about the performance of the heatmap chart. In some post I have found that the heatmap was going to be redesign to improve the performance, someone knows if this have happened?

My issue is that I’m trying to implement the waterfall example, but my 2d array is 50 x 31000 and when I try to render in realtime (with a loop of 500ms or below) it goes extremely slow and the whole app doesn’t respond.
When I switch the ResamplingMode to “Max” it improves a slightly, however the chart start to show some black gaps and color stripes like the data is not rendered properly.

If I run the same example with an smaller array like 100 x 100 none of this happens.

am I hitting the the boundaries of what can be done with the heatmap?

Are there any suggestions to improve the performance? (I have tried the StockThickness=1 and AntiAliasing=false)

If it is useful I can post some code.

0 votes
10k views

Hello,

I have a heatmap that I pass two mapping functions to the Heatmap2DArrayDataSeries (one for x indices and one for y indices).

That is working great.

The user can set the amount of intervals they want to see (as major gridlines). So what I want is to manually control the MajorDelta and MinorDelta, and also set the AutoTicks=false.

When I do this, it renders all the frame for the SciChart Surface, but it seems that it starts making calculations and never draws the heatmap not the gridlines, and finally it throws an OutOfMemory exception.

My data set is not that large: 60×112

What alternative do I have for controlling the amount of intervals shown?

Thank you.
Sebastian

0 votes
13k views

FAQ: How to create a custom legend with TextFormatting for the FastHeatmapRenderableSeries? The provided legend in SciChart v3.4 does not allow text formatting.

0 votes
3k views

Hi all,
I am using the iOS SciCharts version to implement a heatmap series in my application. I am testing out the heatmap by providing a test series of random 100 zValues that range from 1-200. The Heatmap with the stops below just appears blue (see image). My suspicion is that either I am not updating the zValues correctly or the andStops is too low. Can anyone provide insights on what could be the issue?

//Test zValues
let SpectTestArray: [Double] = [ 12,  14, 68, 137, 164, 124, 124, 122, 162, 128, 45, 129,  40,  91,  53, 159,  77,  59,   0,  91, 92,  73,  77,  67, 163,  69, 149, 115,  17,  85, 119, 129, 186,  93,  80,  34, 159, 115,  65, 181, 159,  67, 152,  29,   6, 162,  51, 196, 186, 122, 114, 171, 159, 116,  20, 102,   4, 174, 144, 160, 89,  51,  89, 130, 172, 186,  40, 174,  20, 120, 88, 151, 127, 167,  10,  49, 198,  67, 184, 197, 152, 193, 196, 163,  18,  77,  17, 143, 124, 115, 1, 115, 126,  22,  35,   6,  58, 121,  77,   5]

let colors = [UIColor.fromARGBColorCode(0xFF00008B)!, UIColor.fromARGBColorCode(0xFF6495ED)!, UIColor.fromARGBColorCode(0xFF006400)!, UIColor.fromARGBColorCode(0xFF7FFF00)!, UIColor.yellow, UIColor.red]

CH1HeatMapRenderableSeries = SCIFastUniformHeatmapRenderableSeries()
        CH1HeatMapRenderableSeries.dataSeries = CH1SpectDataSeries
        CH1HeatMapRenderableSeries.minimum = 0.0
        CH1HeatMapRenderableSeries.maximum = 200.0
        CH1HeatMapRenderableSeries.colorMap = SCIColorMap(colors: colors, andStops: [0.0, 0.2, 0.4, 0.6, 0.8, 1.0])
        spectchartsurface?.renderableSeries.add(CH1HeatMapRenderableSeries)

        var Spectvalues = SCIDoubleValues(capacity: 100)

        for n in 0...SpectTestArray.count-1 {
            Spectvalues.add(SpectTestArray[n])
        }
//        print(Spectvalues)
        CH1SpectDataSeries.update(z: Spectvalues)
0 votes
0 answers
10k views

Hi,

Is there any way to get the corresponding color value of Array2D from Heatmap2DArrayDataSeries? I try to create a histogram based on Heatmap.

Thanks,
Mark

1 vote
7k views

To whom this may concern:

I am having an issue setting the axis alignment with your 2D Heatmap series. I have tested this with your “Heatmap Chart” sample from your Examples Suite.

Lines 44-50 are shown below from your “HeatMapExampleView” XAML file. I have added the AxisAlignment parameters as shown.

<s:SciChartSurface.XAxis>
    <s:NumericAxis AxisAlignment="Left" DrawMajorBands="True" />
</s:SciChartSurface.XAxis>

<s:SciChartSurface.YAxis>
    <s:NumericAxis AxisAlignment="Top" DrawMajorBands="True" />
</s:SciChartSurface.YAxis>

Note how the Y-Axis is aligned to a vertical parameter (Top, in this case) and X-Axis is aligned to a horizontal parameter (Left). This leads to scichart not showing any heatmap at all, as shown in the attached images.

It will work if i set Y to Left or Right, and X to Top or Bottom, but not the other way around.

Can you please advise?

Thanks kindly!

  • Ari Sagiv asked 8 years ago
  • last active 8 years ago
0 votes
7k views

Hello again,

I’m working with the 2D Heatmap. I am setting the DrawMajorGridlines to true but they aren’t showing up. I then realized that I could set the Opacity of the series to something different than 1 and the gridlines are shown.

The problem with this is that I want my series background (i.e. all the places where my heatmap has no data double.NaN) to be shown in white, but setting the opacity to something different than 1 makes the background black.

I have tried to set the background to almost anything (Surface, Series, GridLinePanel) and it’s not affecting it.

Am I missing something?

I attach an image.

Thank you.
Kind regards,
Sebastian

0 votes
7k views

Hi,
I have a question regarding coloring on the Heatmap.

Is it possible to color the heatmap titles by some other other value than the data value, like Color? CustomColorProvider(x, y, data value, DataSeries)? We would like to color by “value order” and not the actual value, and have the actual values displayed as text on the titles. (I have tried to adjust the ColorMap GradientStops, but without success)

DataValues could be
[ 10.5, 12.5, 1.234E+150]
[ 1, 2, -1.234E+150]
[-10.5, -12.5, 1.234E-150]

This should result in 9 evenly spread colors.

Best regards
Peter Friis Hansen

  • pfh asked 8 years ago
  • last active 8 years ago
0 votes
4k views

Hi SciChart-Team,

I’m currently rewrite one of our applications and move this from the leagacy .NET Framework to .NET Core.
I also replace the old SciChart.DirectX package and the DirectX Renderer plugin with the new VisualXcceleratorEngine witch is also based on DirectX.

In one chart we display a Order Spectrum as a heatmap (FastUniformHeatmapRenderableSeries) with linearly interpolated color between the cells. Thefore we activate the property UseLinearTextureFiltering.

But with the new VisualXcceleratorEngine is there no linearly interpolated color between the cells. Is this feature only available for the old DirectX Renderer plugin??

Thanks

0 votes
7k views

Hello,

I’m using FastHeatMapRenderableSeries in my project. I need to display this HeatMap on vetrical charts. But when I make AxisAlignment=”Right” for x-axis and AxisAlignment=”Bottom” for y-axis, the HeatMap disappears.
How can I fix this?

I’ve attached an example project below

Thanks in advance

Showing 12 results

Try SciChart Today

Start a trial and discover why we are the choice
of demanding developers worldwide

Start TrialCase Studies