Tuesday, March 20, 2012
Custom Series Color in SP1 Charts
and am unable to find documentation on it.
I read a post here on trying the Choose() function in the fill color portion
of the series value, but my chart goes gray in the layout mode, and then in
the preview mode it just shows the default colors.
Any documentation on this I can read?Keep in mind that expressions cannot be evaluated in design mode.
From the SP1 Readme about chart enhancements:
http://download.microsoft.com/download/7/f/b/7fb1a251-13ad-404c-a034-10d79ddaa510/SP1Readme_EN.htm#_chart_enhancements
"If you use an expression for fill color, the chart elements will be white
in Layout view, but will display properly when the report is run."
--
This posting is provided "AS IS" with no warranties, and confers no rights.
"Matt" <Matt@.discussions.microsoft.com> wrote in message
news:1AA68AB0-128E-44B2-8519-6357D7EBD465@.microsoft.com...
> I'm trying to figure out how to create a custom series color in a bar
chart,
> and am unable to find documentation on it.
> I read a post here on trying the Choose() function in the fill color
portion
> of the series value, but my chart goes gray in the layout mode, and then
in
> the preview mode it just shows the default colors.
> Any documentation on this I can read?|||That makes sense,
But still having an issue of what function to use in the fill color field.
I have
=IIf( Fields!descriptn.Value = "Self", "white","Transparent")
But it seems to ingore it.
"Robert Bruckner [MSFT]" wrote:
> Keep in mind that expressions cannot be evaluated in design mode.
> From the SP1 Readme about chart enhancements:
> http://download.microsoft.com/download/7/f/b/7fb1a251-13ad-404c-a034-10d79ddaa510/SP1Readme_EN.htm#_chart_enhancements
> "If you use an expression for fill color, the chart elements will be white
> in Layout view, but will display properly when the report is run."
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
> "Matt" <Matt@.discussions.microsoft.com> wrote in message
> news:1AA68AB0-128E-44B2-8519-6357D7EBD465@.microsoft.com...
> > I'm trying to figure out how to create a custom series color in a bar
> chart,
> > and am unable to find documentation on it.
> >
> > I read a post here on trying the Choose() function in the fill color
> portion
> > of the series value, but my chart goes gray in the layout mode, and then
> in
> > the preview mode it just shows the default colors.
> >
> > Any documentation on this I can read?
>
>|||There might be multiple issues here:
* A chart is similar to a matrix. Therefore a "cell" (datapoint) in a chart
can actually contain multiple rows depending on the groupings applied. Using
Fields!description.Value will always return the first value if multiple rows
are present.
If series groupings are present in the chart, you have to use
=First(Fields!description.Value, "NameOfInnermostSeriesGrouping") to get the
correct datapoint value in your expression. You might also want to check
this thread:
http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.sqlserver.reportingsvcs&mid=15f4e34b-345a-4876-8cbe-734b9e4dfa53&sloc=en-us
* Transparent is not a valid color. The only exceptions are currently the
chart area and the plot area fill colors (it's on the wishlist for
extensions in a future release).
Since transparent is not valid color, it gets ignored and the default color
(from the palette) applies. If you want to "hide" entire
datapoints/categories, you can filter them. If you have a solid plotarea
background color you could also assign the plotarea color to hide
datapoints.
--
This posting is provided "AS IS" with no warranties, and confers no rights.
"Matt" <Matt@.discussions.microsoft.com> wrote in message
news:917930D0-5D0E-4231-A6BD-1B58602D4D9F@.microsoft.com...
> That makes sense,
> But still having an issue of what function to use in the fill color field.
> I have
> =IIf( Fields!descriptn.Value = "Self", "white","Transparent")
> But it seems to ingore it.
> "Robert Bruckner [MSFT]" wrote:
> > Keep in mind that expressions cannot be evaluated in design mode.
> > From the SP1 Readme about chart enhancements:
> >
http://download.microsoft.com/download/7/f/b/7fb1a251-13ad-404c-a034-10d79ddaa510/SP1Readme_EN.htm#_chart_enhancements
> > "If you use an expression for fill color, the chart elements will be
white
> > in Layout view, but will display properly when the report is run."
> >
> > --
> > This posting is provided "AS IS" with no warranties, and confers no
rights.
> >
> >
> > "Matt" <Matt@.discussions.microsoft.com> wrote in message
> > news:1AA68AB0-128E-44B2-8519-6357D7EBD465@.microsoft.com...
> > > I'm trying to figure out how to create a custom series color in a bar
> > chart,
> > > and am unable to find documentation on it.
> > >
> > > I read a post here on trying the Choose() function in the fill color
> > portion
> > > of the series value, but my chart goes gray in the layout mode, and
then
> > in
> > > the preview mode it just shows the default colors.
> > >
> > > Any documentation on this I can read?
> >
> >
> >|||We create one particular line chart in which the number of lines will be
different based on what the user selects when printing the report. They graph
the performance of their portfolio to that of 1-5 different indices. So the
chart will have between 2 and 6 different lines on it.
In the data tab of the chart, we have one item listed under values, one
under category groups, and one under series groups.
Everything works great. Our problem is that when there are so many lines
that the chart uses a Green and LightGreen color for two of the lines, our
client can't tell those two colors apart and wants us to use a different
color than LightGreen.
We have tried to use the various suggestions seen in this and other blogs to
customize the color but it doesn't work.
Can anyone help us? I can provide more info if needed.
This is what we have tried under
Edit Value=>Appearance=>Series Style=>Fill=>Color=>Expression:
=Choose(Fields!uv_port_type.Value,"Red","Blue","Green","Yellow","Purple","Orange")
=CStr(Choose(Fields!uv_port_type.Value,"Red","Blue","Green","Yellow","Purple","Orange"))
= Choose(First(Fields!uv_port_type.Value,
"dsUnitValues"),"Red","Blue","Green","Yellow","Purple","Orange")
= CStr(Choose(First(Fields!uv_port_type.Value,
"dsUnitValues"),"Red","Blue","Green","Yellow","Purple","Orange"))
(We also tried "IIF" statements.)
Thank you!
Jen
"Robert Bruckner [MSFT]" wrote:
> There might be multiple issues here:
> * A chart is similar to a matrix. Therefore a "cell" (datapoint) in a chart
> can actually contain multiple rows depending on the groupings applied. Using
> Fields!description.Value will always return the first value if multiple rows
> are present.
> If series groupings are present in the chart, you have to use
> =First(Fields!description.Value, "NameOfInnermostSeriesGrouping") to get the
> correct datapoint value in your expression. You might also want to check
> this thread:
> http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.sqlserver.reportingsvcs&mid=15f4e34b-345a-4876-8cbe-734b9e4dfa53&sloc=en-us
> * Transparent is not a valid color. The only exceptions are currently the
> chart area and the plot area fill colors (it's on the wishlist for
> extensions in a future release).
> Since transparent is not valid color, it gets ignored and the default color
> (from the palette) applies. If you want to "hide" entire
> datapoints/categories, you can filter them. If you have a solid plotarea
> background color you could also assign the plotarea color to hide
> datapoints.
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
> "Matt" <Matt@.discussions.microsoft.com> wrote in message
> news:917930D0-5D0E-4231-A6BD-1B58602D4D9F@.microsoft.com...
> > That makes sense,
> >
> > But still having an issue of what function to use in the fill color field.
> >
> > I have
> >
> > =IIf( Fields!descriptn.Value = "Self", "white","Transparent")
> >
> > But it seems to ingore it.
> >
> > "Robert Bruckner [MSFT]" wrote:
> >
> > > Keep in mind that expressions cannot be evaluated in design mode.
> > > From the SP1 Readme about chart enhancements:
> > >
> http://download.microsoft.com/download/7/f/b/7fb1a251-13ad-404c-a034-10d79ddaa510/SP1Readme_EN.htm#_chart_enhancements
> > > "If you use an expression for fill color, the chart elements will be
> white
> > > in Layout view, but will display properly when the report is run."
> > >
> > > --
> > > This posting is provided "AS IS" with no warranties, and confers no
> rights.
> > >
> > >
> > > "Matt" <Matt@.discussions.microsoft.com> wrote in message
> > > news:1AA68AB0-128E-44B2-8519-6357D7EBD465@.microsoft.com...
> > > > I'm trying to figure out how to create a custom series color in a bar
> > > chart,
> > > > and am unable to find documentation on it.
> > > >
> > > > I read a post here on trying the Choose() function in the fill color
> > > portion
> > > > of the series value, but my chart goes gray in the layout mode, and
> then
> > > in
> > > > the preview mode it just shows the default colors.
> > > >
> > > > Any documentation on this I can read?
> > >
> > >
> > >
>
>|||I found the following on SQLJunkies.. Seems to work:
--
Need a custom palette for your charts? Embed the function below into your
report, and set the Data > Values > Appearance > Series Style > Fill to the
custom function =Code.SetColor. Replace the nnnn's below with the hex codes
you need. See http://www.321webmaster.com/colorconverter.php for an RGB to
hex converter online. And hug the Reporting Services developers for adding
custom color functionality into SP1.
Function SetColor As String
Static ColorCode as Integer
ColorCode = ColorCode + 1: If ColorCode > 5 then ColorCode = 1
Select Case ColorCode
Case 1:
SetColor = "#00nnnn" ' Bluish
Case 2:
SetColor = "#78nnnn" ' Greenish
Case 3:
SetColor = "#E2nnnn" ' Reddish
Case 4:
SetColor = "#00nnnn" ' Navyish
Case 4:
SetColor = "#CCnnnn" ' Yellowish
Case 5:
SetColor = "#00nnnn" ' Light Blueish
Case Else:
SetColor = "#000000" ' Black (placeholder)
End Select
End Function
--
I have a where I need to show an average value in bar graph, but how many
values went into that average is also important. I pull back a percentage in
the query and then created a function that based on a percentage, returns a
color. Added =Code.FunctionName(pct) to the series fill and voila!
George
"Jen Rubin" wrote:
> We create one particular line chart in which the number of lines will be
> different based on what the user selects when printing the report. They graph
> the performance of their portfolio to that of 1-5 different indices. So the
> chart will have between 2 and 6 different lines on it.
> In the data tab of the chart, we have one item listed under values, one
> under category groups, and one under series groups.
> Everything works great. Our problem is that when there are so many lines
> that the chart uses a Green and LightGreen color for two of the lines, our
> client can't tell those two colors apart and wants us to use a different
> color than LightGreen.
> We have tried to use the various suggestions seen in this and other blogs to
> customize the color but it doesn't work.
> Can anyone help us? I can provide more info if needed.
> This is what we have tried under
> Edit Value=>Appearance=>Series Style=>Fill=>Color=>Expression:
> => Choose(Fields!uv_port_type.Value,"Red","Blue","Green","Yellow","Purple","Orange")
> => CStr(Choose(Fields!uv_port_type.Value,"Red","Blue","Green","Yellow","Purple","Orange"))
> = Choose(First(Fields!uv_port_type.Value,
> "dsUnitValues"),"Red","Blue","Green","Yellow","Purple","Orange")
> = CStr(Choose(First(Fields!uv_port_type.Value,
> "dsUnitValues"),"Red","Blue","Green","Yellow","Purple","Orange"))
> (We also tried "IIF" statements.)
> Thank you!
> Jen
>
> "Robert Bruckner [MSFT]" wrote:
> > There might be multiple issues here:
> > * A chart is similar to a matrix. Therefore a "cell" (datapoint) in a chart
> > can actually contain multiple rows depending on the groupings applied. Using
> > Fields!description.Value will always return the first value if multiple rows
> > are present.
> > If series groupings are present in the chart, you have to use
> > =First(Fields!description.Value, "NameOfInnermostSeriesGrouping") to get the
> > correct datapoint value in your expression. You might also want to check
> > this thread:
> > http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.sqlserver.reportingsvcs&mid=15f4e34b-345a-4876-8cbe-734b9e4dfa53&sloc=en-us
> >
> > * Transparent is not a valid color. The only exceptions are currently the
> > chart area and the plot area fill colors (it's on the wishlist for
> > extensions in a future release).
> > Since transparent is not valid color, it gets ignored and the default color
> > (from the palette) applies. If you want to "hide" entire
> > datapoints/categories, you can filter them. If you have a solid plotarea
> > background color you could also assign the plotarea color to hide
> > datapoints.
> >
> > --
> > This posting is provided "AS IS" with no warranties, and confers no rights.
> >
> >
> > "Matt" <Matt@.discussions.microsoft.com> wrote in message
> > news:917930D0-5D0E-4231-A6BD-1B58602D4D9F@.microsoft.com...
> > > That makes sense,
> > >
> > > But still having an issue of what function to use in the fill color field.
> > >
> > > I have
> > >
> > > =IIf( Fields!descriptn.Value = "Self", "white","Transparent")
> > >
> > > But it seems to ingore it.
> > >
> > > "Robert Bruckner [MSFT]" wrote:
> > >
> > > > Keep in mind that expressions cannot be evaluated in design mode.
> > > > From the SP1 Readme about chart enhancements:
> > > >
> > http://download.microsoft.com/download/7/f/b/7fb1a251-13ad-404c-a034-10d79ddaa510/SP1Readme_EN.htm#_chart_enhancements
> > > > "If you use an expression for fill color, the chart elements will be
> > white
> > > > in Layout view, but will display properly when the report is run."
> > > >
> > > > --
> > > > This posting is provided "AS IS" with no warranties, and confers no
> > rights.
> > > >
> > > >
> > > > "Matt" <Matt@.discussions.microsoft.com> wrote in message
> > > > news:1AA68AB0-128E-44B2-8519-6357D7EBD465@.microsoft.com...
> > > > > I'm trying to figure out how to create a custom series color in a bar
> > > > chart,
> > > > > and am unable to find documentation on it.
> > > > >
> > > > > I read a post here on trying the Choose() function in the fill color
> > > > portion
> > > > > of the series value, but my chart goes gray in the layout mode, and
> > then
> > > > in
> > > > > the preview mode it just shows the default colors.
> > > > >
> > > > > Any documentation on this I can read?
> > > >
> > > >
> > > >
> >
> >
> >
Custom Semi-Transparent bar charts?
I know that SSRS 2005 has a built-in semi-transparent color chart palette, but I'd like to define my own custom color semi-transparent palette.
Brian Welker's blog (https://blogs.msdn.com/bwelcker/archive/2005/05/20/420349.aspx) has a terrific post on how to create your own custom color palette, but it generates solid colors. How can it be tweaked to create semi-transparent colors? Is there another function that needs to be created to define the transparency of the color palette?
Thanks in advance,
Pete
Sorry, semi-transparency cannot be achieved by defining your own custom color palette.
There are CustomReportItem-based chart add ins available for RS from third parties (such as Dundas and ChartFX) which will enable that kind of functionality in RS 2005.
-- Robert
|||Bummer.
Can images be used in charts? (I doubt it, but thought I'd inquire.)
Thanks,
Pete
Yes, you can use an image as a background image for the chart plotarea (select the chart and look for the BackgroundImage property in the VS properties window).
-- Robert
|||I should have made my followup question clearer. I meant to ask if images can be used in the actual charting of values, for example to use an image of coins for bar charts whereby the bars on the chart are actually a "stack" of the coins. Or to use an image that gets "stretched" on the bars of a bargraph.
--Pete
|||I believe the plug-in from Dundas ("Dundas Charts for Reporting Services") supports this, but you would need to check with them. It is not supported out of the box with the built-in charts.
-- Robert
|||Transparency is more than possible with ANY system palette or custom palette.
The trick (work-around whatever) lies in modifying the 'alpha' component of the colour for each series in the chart AFTER they have had their colour assigned to them.
ie. i used the code
//set the transparency of the series
if(_abstractChart.Options.Transparency > 0) {
//get the transparency as a percentage
double transPerc = _abstractChart.Options.Transparency / 100.00;
//Alpha value 255 is opaque, 0 is transparent. set the transparency as a % of 255
int alphaValue = (int) (255 * (1-transPerc));
_chart.ApplyPaletteColors();
foreach(Series series in _chart.Series) {
series.Color = Color.FromArgb(alphaValue, series.Color.R, series.Color.G, series.Color.B);
}
}
where
-abstractChart.Options.Transparency is the integer value (between 0 and 100 inclusive) denoting the transparent %.
-_chart is a Dundas.Charting.WebControl.Chart
in my C# application, a percentage value is retrieved from the user from an aspx form. I subtract the tranparent component of the alpha value from the max (255) to get the Opacity, which is what i set in the colour. Giving the user 101 grades of tranparency (no pun intended).
HOWEVER, i actually have a problem. Though this method works fine for bar chart, radar, area line charts, it DOES NOT work for pie charts. The semi-transparent palette works for pie charts, but this method does not.
Perhaps someone with more knowledge of the dundas system could use my solution in the right place to achieve transparency for pie charts?
please?
I thought maybe using this method in Customize, PrePaint or PostPaint event would work. Havent had the chance to try it yet.
Cheers
|||
Okay, i figured it out.
A bar chart has one series object in the Dundas.Charting.WebControl.Chart.Series[] of the chart for every bar, so setting the colour of the series would apply to the bar which that series plots.
A pie chart has one series object for the whole chart, and the slices are individual datapoints within that series.
The solution quite simply is to add another level to the loop which iterates through every datapoint of the current series.
If processing time is a concern there should be a check present for whether the second loop is necessary (so far i have only found it necessary within PIE charts)
if(abstractChart.Options.Transparency > 0) {
//get the transparency as a percentage
double transPerc = abstractChart.Options.Transparency / 100.00;
//Alpha value 255 is opaque, 0 is transparent. set the transparency as a % of 255
int alphaValue = (int) (255 * (1-transPerc));
chart.ApplyPaletteColors();
foreach(Series series in chart.Series) {
if(abstractChart.GetChartType != ChartType.Pie) {
series.Color = Color.FromArgb(alphaValue, series.Color.R, series.Color.G, series.Color.B);
}
else{
foreach(DataPoint dp in series.Points) {
dp.Color = Color.FromArgb(alphaValue, dp.Color.R, dp.Color.G, dp.Color.B);
}
}
}
}
Where
-abstractChart.Options.Transparency is the integer value (between 0 and 100 inclusive) denoting the transparent %.
-_chart is a Dundas.Charting.WebControl.Chart
-abstractChart.ChartType is an identifier for the type of chart we are plotting (Abstract Chart is one of MY classes, as is ChartType)
By the way, this code is called after the chart object has been created, but before returning from the method which created the chart object.
IE.
public Dundas.Charting.WebControl.Chart MakeChart(){
Dundas.Charting.WebControl.Chart chart = new Dundas.Charting.WebControl.Chart();
..
..
..
..
<transparency code>
..
..
..
return chart;
}
any questions?
LiLbUg@.ozemate.com
just an out of topic question: sorry because i need an answer really fast hope you understand....
Hi everyone,
I just inquiring if the 'My subscription' toolbar at the upper right portion of the report manager can be removed? or shall we say hide... If possible, how to remove please help...
Another question is when you click the show details button, the option to delete and move appears but it is initially disabled...is there a way also to hide the move button?
thank you very much...hope to have any response or advice as soon as possible...thanks
|||Hello Thor:
Interesting... I'm a little confused, though. Is your code affecting the Dundas charting component or are you suggesting a way to create charting transparency in reporting services without the need for a third party add-in like Dundas (or ChartFX)?
Thanks,
Pete
|||hey pete
yeh, not sure what you mean, theres alot of syllables in some of those words.
To try to answer your question; i'm using dundas, and the code i supplied directly changes the colour value for datapoint objects/series objects inside a DUNDAS chart. IE i assign a new colour for each datapoint/series in the code, in this case the new colour is the same as the old one (which is assigned from the palette) except the alpha value has been changed.
effectively, any palette can therefore have transparency applied to it, retaining the oiginal colours of the palette.
SO... i think the answer to your question is that this code NEEDS dundas and i affect the instance of the dundas charting component to create transparency.
but technically this should work for any charting tool that allows you to modify the colour of the datapoints in a series after they have been assigned a colour and before they are drawn.
ps. last time i ran my app. it changed the colour for the whole pie chart to the colour of the first datapoint. i think this code would have to be in the PrePaint event (its worked there before).
ill post again when i know for sure.
...Edit...
just read the top post again, and realised you're not using dundas. for some reason i thought this was all about dundas.
anyways, this should work for that charting thing you use IF you can change the colours of the series / datapoints at the right time. Might take some experimenting to figure out where, or even if you can do it.
Sunday, February 19, 2012
Custom Charts...
that will appear inline int he report as the stock reports do?
reports and reports, but I would like to have some specific views that arent
in the chart selection.
Thanks in advance
Weston WeemsThere are several options:
* RS 2000:
You could draw your chart in a custom assembly and retrieve the value via
the Image.Value expression. Note: the custom assembly would be responsible
to retrieve all the data needed to draw the chart.
If you search the archives of this newsgroup you should find some related
postings from me and other people about how to do this.
* RS 2005:
In addition to what you can do on RS 2000, you could take advantage of the
new CustomReportItem feature and write your own custom processing control.
In this case, you could leverage the capabilities of the RS processing
engine to retrieve, group, sort, filter the data for you and the custom
processing control can read the already processed data through an object
model and then draw the chart image and return it as Image "rendering item".
More information and samples about this will be available when SQL Server
2005 is going to be released.
Robert M. Bruckner
Microsoft SQL Server Reporting Services
This posting is provided "AS IS" with no warranties, and confers no rights.
"Weston Weems" <wweems@.NOSPAMno-span-gmail.com> wrote in message
news:%23lzKjnWXFHA.2128@.TK2MSFTNGP14.phx.gbl...
> Does reporting services currently allow me to write my own particular
> chart that will appear inline int he report as the stock reports do?
> reports and reports, but I would like to have some specific views that
> arent in the chart selection.
> Thanks in advance
> Weston Weems
>
Tuesday, February 14, 2012
Custom Annotations on SRS 2000 charts
I would like to be able to put custom annotations on charts. Specifically I have a line chart I want to annotate. I don't want to indicate all plot points, just areas of interest. For example, on one of our line charts there is a value for a week (weeks are the x-Axis) that is way out of whack with other weeks. I would like to be able to display only that value, circle that location on the chart and create a custom note so that when the report displays, all users can see it.
All I've been able to find that I can customize on SRS line charts is to add all plot points and be able to change their shape and color and font size. I want to be able to do way more than that with annotations. Is it possible? I have .NET programming abilities so I'd be willing to write code to do it, I just can't find any examples of how I can write custom code to do things like this.
Thanks for any help!
Mary
You may need to look at a 3rd-party charting tool such as Dundas Charts for Reporting Services. Unfortunately these are only available with RS 2005.
cheers,
Andrew
|||We purchased Chart FX for Reporting Services and it works like a charm, but this is for RS2005 http://www.softwarefx.com/SfxSqlProducts/cfxReportingServices/ . But I think there is not a version for RS2000 anywhere in the market... Sorry I cannot help much on this one.