Too many markers makes chart unreadable. How to reduce number of markers? - reporting-services

I am charting a dataset that contains hundreds of datapoints as we're logging information about every 15 minutes and I want to report over a month's worth of data. When charting a single day's worth of data the readability is fine. But when I plot a month's worth of data, it is no long really readable due to me enabling markers. I have markers enabled as a requirement is to have it readable when printed in black & white.
What's the best practice to make the chart readable? Aggregating the data per hour/ per day is not an option as these are gauge readings and the customer doesn't want to lose any fidelity in the readings.

I know this was asked a long time ago, and I'm not 100% sure what your interval will be. Still this worked for me, and hopefully it will help someone else.
I needed to have the markers show up for every-other data point, so I used this expression for the name of the Marker Type:
=IIF(RowNumber(Nothing) Mod 2 = 0, "Diamond", "None")
This is based on the commonly used code for alternating rows, but I think you should be able to modify the concept to get to what you need.

Generally you need to set a max duration you want to view and test what that will look like for your users. You can do a few things but all involve the 'tick marks' and labels for the most part. On a chart object you can click once on a child element of the chart and select it. You may do this for the vertical or horizontal axis of a standard line chart in my example. Let's say you click on the vertical axis near the labels. It will show a dotted rectangle to show it is selected. Right Click and choose 'Vertical Access Properties'.
Select 'Major Tick Marks' on the left pane.
Your first option may be to 'Hide Major tick marks' select that and then do not see anything but labels.
Your second may be that you change the 'Interval' from AUTO to something else. Change the 'Interval type:' to something else and then change the Interval as needed.
Maybe you need dynamic control, you can then select the 'fx' expressions to choose a type potentially that changes. EG: Say you have a date range and someone selects month, maybe you want to make it weeks then, someone selects a year you want months, etc...
What you are describing is hard when you give a person a lot of data, you can also set just the beginning and end and then the line will adjust as necessary. The key in good charting is to allow a user to see what they need but make it readable no matter what. When you have broad options I find that less labels and ticks are best.

Related

SSRS Combination Pie Chart

I have created a combination chart in excel which I am attempting to replicate within SSRS.
The chart shows three versions of 'success' plus the percentage 'failed'. (Please see image for more detail)
For one of the segments, i.e. success v2, I would like to then break this data down by how long it took to achieve success, as a percentage.
I've attempted changing my chart type a few times within SSRS and exploring the chart 'General Custom Attributes' however I haven't been able to get very far with figuring out how to link two pie/donut charts...your help would be invaluable!
Thanks
Charlotte
Welcome to SO!
This isn't really an answer but a list of things to look at/consider and too long to fit in a comment.
You need to look at the Chart Series properties, in particular the Custom Attributes related to 'Collected...'
This allows you to explode a section but as far as I know it only allows you to use values or a % lower than a specified threshold, not a particular section as you want. This migh work if the section you want to explode out is always the smallest but I guess you cannot guarantee that.
You might be able to get round this by adding another column to your dataset that always shows a high number for 'failure' and 'success x1' and a small number for 'success x2' but i'm not sure if you can define which field to explode on and visualise a different field, otherwise your main pie would look incorrect.
Alternatively you could just show two charts.

SSRS Charts: solution for better assignment of colors to the legend

If you have a line chart in SSRS with many lines, it is nearly impossible to identify which line belongs to which item in the legend, as the colors are nearly the same. Is there a better solution?
bad example of line chart legend
Some suggestions that may help:
Group some of the values into an Other group. It looks like you have
some values that come and go, or don't run for the full timeframe of the
report, lumping these into an Other group will mean less legend items.
Move the legend to the bottom of the chart. This can sometimes make
the legend easier to see; this is not a good option when have a lot
more legend items than what you have now.
Use more than one chart; one chart for each line is possible. This
may be a good option for you. Use more than one chart, and only
display certain values in each. Perhaps you have some natural
grouping in the data that isn’t obvious from what you have provided
in the question. If you do, use that to separate the values into
different charts.
Use a different color theme. The theme you are using now would leave
any color-blind person wondering what was in the chart at all.
Make the chart larger. You just never know, this may work.
Use a column chart rather than a line chart. The bars are wider, and
can be easier to see. Plus, with the way your values come and go, it
may be a better way to visualize the data.
Limit the timeframe of the data being displayed. Having less data may
make this look better, but that may defeat the purpose of the report.
Still, it’s an option.
Good luck.
All good ideas by R Richards. I often end up with charts looking like yours. The first thing I do is ask. Is this of any use to the end user, if not I'll try to rationalise the chart. Some of the ideas in the earlier answer are things I try but also you can try the following without reducing the amount of data in the chart.
Simply make the lines thicker, it's much easier to identify the colours with thicker lines.
Add tooltips to the data points so that the user can hover over the
lines and get info about the line and/or point.
Use a custom pallet, the default palette does not have many colours in (7 I think), so colours are repeated. Creating a custom palette with more colours will make it easier to identify each line. It also means, if you can ensure the order of series in your data that you can you produce consistent charts were a colour always represents a specific business object.
If you have breaks in the data, change the chart to use an average
to give you a continuous line. I think your x axis has to be set as
a time type for this to work, I can't remember off the top of my
head.
Here's a before and after the first two ideas were applied to a sample chart I built.
If you think you need to reduce the data, group line with smaller values together and then add a drill down chart to show these lines.

Spotfire, Barchart width, and setting display intervals on x-axis

If I click the x-axis, year, and go to custom expression, it says [Year] for the upper picture. Also, for the upper picture case, I cannot adjust the bar width.
But for some reason if I type <[Year]>, into the expression, it gives me this, and suddenly I can change the bar width to what I want it to be in Properties.
I don't understand what is causing this difference.
I want to make my bar chart to be thicker like the bottom one, but I also want my x-axis to display years on 5-year interval like, 1995 - 2000 - 2005 - 2010... but I don't know how I can do it.
Please take into consideration that I don't have any basis with codes for custom expression. So if you were to answer to my question with codes for custom expression, please give me a full code that works.
I am experiencing a really big limitation with me not being able to manipulate custom expressions, but currently I don't have time to start learning it from the basics... I've tried to look it up, but lots of them were talking about binned columns, and I just don't understand.
scsimon
I cannot press ok. I am not sure if I am doing this right tho. Just to be clear, what I want is from the first screenshot, everything stays the same, but just by bar getting thicker. I so still want separate bars for each year, I just want the x-axis label to label on 5 year interval
Binning is used on the back end a lot of times naively and can be tricky to use in a custom expression. The bin function you want to use is BinBySpecificLimits() The first think to do is create a calculated column for your year if you haven't already.
Year([DateColumn]) as [Year]
Then use your Bin function.
BinBySpecificLimits([Year],1994,2000,2005,2010,2015,2020)
This is evaluated as bins where the bin is
Bin <= 1994
1994 < Bin <= 2000
2000 < Bin <= 2005
etc...
I can understand your urgency... but I would also strongly suggest you play with the custom expressions. They are very SQL like. Things only get harder :)

Reducing flicker in a real-time graph?

I am rendering a scatter plot every 5 seconds where the X-axis denotes time and Y-axis denotes a set of names ordered alphabetically.
A set of data points (say, 'X's) can optionally be grouped into a category and so I use a color to show this. Therefore all 'X's with the same color belong to the same category and so on.
Problem: I have tens of thousands of 'Name's and they can appear randomly on the graph at some point in time. The real purpose is to provide the user with a graph that provides the ability to monitor these names. Therefore, every time I render the graph, I get the list of points to be rendered and the underlying graph library: Flotr2 takes care of assigning colors to the sets of points. Therefore, if the dataset contains two categories of points, it assigns two colors and if a point belonging to a new category arrives, it assigns a third color. As a result of this, what I am observing due to this is a flicker effect:
And when the point disappears, the colors revert back to the ones before. Is there a good way to solve this problem? I have two specific problems:
Colors keep changing for every new point being added
A new point added somewhere shifts every other point vertically in either direction. For instance, if Category 2.5 is added, it ends up shifting Category 2 down and Category 1 up because the alphabetical order should be preserved.
In a scenario which is highly dynamic, such a graph tends to be useless because of the dynamism it shows visually. One obvious solution I can think of is to pre-allocate space for all points and all categories possible in the graph so that an appearance of a new point will not change anything but it just draws a point somewhere. However, I am not clear if this approach is ideal for large data sets where the set of names and categories change often.
Is there a good way to solve this problem? I am open to other graph types that mitigate this problem. In short, I want a real-time display that is capable of showing the appearance of new names on a time axis.

Access continuous forms -- how to individualize controls per record?

I have an Access form displaying a tiny amount of data for a certain type of record. Basically it just prints the name on the left and on the right has a bunch of Rectangle controls whose background color I change in the form's OnLoad() function, according to results from a query performed using that record's ID as parameter.
This all worked fine, got my ID/name on the left and 31 boxes on the right, colored if that day of the month is reserved :) But needless to say that function can be completely arbitrary since it's code.
Then I decided to switch to 'continuous form' as to display as many records/items as possible. But alas, it was not to be -- all boxes were colored according to the query/function performed for the first record only. I figured that might be because it's the OnLoad() but changing it to OnCurrent() did not do much either. As it turns out, or that's what I read, the Rectangle intances are shared over the entire form and if I change the BackColor for one of them it changes for that box for each record.
I want to be able to change this according to a query performed on a per-record basis. Is there any way? Up until now I've only been able to find conditional formatting (the feature that's nor available for rectangles nor seems to cater my exact needs?) and kludgy Access 97 text-box hacks.
Thanks in advance :)
You may be coming from an HTML background, where rectangles would be a natural solution. They aren't in Access. I don't think they'll work for you (in fact, "kludgy" could describe the attempt in my humble opinion).
You can however display an image. You'll keep an image for each status ready to call up. I've made visual displays this way. A little later I may be able to post some code, but I think you'll find this plays out pretty simply even if I don't.
ADDED NOTE: I'm glad this looks like it will work for you. You are concerned about "instanced only once" in your comment below. Yes, that's true for rectangles which are unbound controls (because they are designed for mere ornamentation). But you'll be using an image control which is a bound control (see Remou).
Change each rectangle to a text box, Control Source:
=Iif(myConditionIsMet,"ÛÛÛÛÛ","")
The "Û" is the Full Block character in Arial (asc 219).
All unbound controls in a continuous form will be the same; bound controls can be varied using conditional formatting.