Dynamically creating multiple chart areas - vb.net

I am creating a program which given some data files, creates charts based on these files. Rather than creating multiple charts, I have chosen to create multiple chart areas in a loop and add the various data to the chart areas. When using some sample data, which is small, the program creates 3 chart areas within a chart and works fine.
However using larger data, the program creates the chart areas but because there are over 10 chart areas to create, they do not fit into the size of the chart and also are aligned vertically rather than horizontally.
What I would like to do is increase the size of the chart fitting in all the chart areas for large data, aligning all the chart areas vertically and allowing the user to view all the chart areas via a scroll bar, since there will be a lot of chart areas using the real data files, any help will be appreciated.

The below are examples of alignment types you can switch to
Chart1.ChartAreas(0).AlignmentOrientation = AreaAlignmentOrientations.Horizontal
Chart1.ChartAreas(0).AlignmentOrientation = AreaAlignmentOrientations.Vertical
As for a scroll bar, the chart control doesn't support scroll bars. What I would do is have my original chart contained in some sort of panel/tab [any container that supports scroll bars] and then is number of charts required reaches a certain level add another chart below your original and then allow the container to build the scroll bar
'when charts required is now 5 create new chart
If Chart1.ChartAreas.Count =4 Then
Dim OverflowChart As New Chart
'add a new chart below your current chart and let the container
'have the scroll bar and not your chart control
End if

I managed to figure it soon after I posted here which is ironic. For the sake of anyone with similar problems in the future. The way I did it was to:
- Add a scrollbar to the form
- Make the blank chart as big as possible to fit whatever data which was going to be used
- Manually set the position of each chart area using ChartArea.Position and changing the posY for each chart in a loop
This worked great and gave me a lot of control as to how big I wanted the chart areas since ChartAreas.Position also has a width and height attribute and allowed me to easily align the chart areas horiziontally using the y coordinates of each chart area.

Related

Customizing Excel 2010 chart label placement using VBA

I need to customize the placement of a vertical axis label on a horizontal stacked bar chart in Excel. Currently I can only place the axis label outside of the chart, but I need to show each label inside the chart - to the left or right of the bar it is associated with (depending on orientation).
The easiest way to do this is to add a text box that references the cells that contain the title values. This is much easier than customizing the chart titles themselves.

Using the Form Scrollbar to Control Image Transparency in Excel VBA

I'm struggling in making a form scrollbar to control the image transparency. To be specific, I've got two images that I'm linking to two buttons. Hide/show buttons, and I want the scrollbar to control the image transparency as shown in the image below. Your help would be appreciated. I can't wrap my head around to code it.
Here is a low-tech approach.
1) Create a rectangle and fill it with your picture. This doesn't require any VBA.
2) Insert the scrollbar and, using the properties, link your scrollbar to a cell with the default 0-100 range of the scrollbar's values. For example, in the following picture I linked it to J20:
Then, in a standard code module put:
Sub SetTransparency()
Sheets(1).Shapes("Rectangle 1").Fill.Transparency = Sheets(1).Range("J20") / 100
End Sub
(With of course things like Sheets(1), "Rectangle 1" and "J20" to be adjusted to match your situation)
Then - all you have to do is right click on the control and select Assign Macro to assign this macro to your control. It can be used like:
Possibly unfortunately (depending on your desires) the transparency doesn't change continuously as you scroll. AKAIK, you would need to use Active-X controls for that.

HighStock - Issue with dynamic charts when navigator is disabled

I am using the dynamic chart of Highstock. I happen to disable the navigator control of the chart, but have the scrollbar enabled. Now the issue is - if I zoom the chart once, the lines that are already drawn for the curves start to get deleted/erased starting from the left side of the chart and after a certain amount of time all the lines of each curve on the chart get deleted. But if I enable navigator control for the chart, this issue is not see.

Modify Z-index on Series object in Excel 2010

I am using excel 2010.
I have a chart diagram on which i put a rectangle to surround the highest column bar.
In order to make things more readable, i would like to place this rectangle on the chart but NOT in front of the lines/bars/etc...It has to be behind them.
Shape objects (like my rectangle) have a ZIndex property than can be modified in order to achieve that. Thing is, it seems impossible to put that behind the elements of my chart, nor the chart itself.
The main reason is because Chart objects and Series objects (which are the columns inside my chart) doesn't have a Z-Index property.
Is there a way which could allow me to achieve this ? Other than modifying ZIndex property ?
You can move the Chart in front of the Shape, or the Shape in front of the Chart. But what you are looking to do is to stuff the Shape behind some components of the chart, but still in front of the chart background.
That, as far as I know cannot be done.
But you can simulate the effect by making the Chart's background and the Plot area transparent (no fill, instead of the default White fill) by simply right clicking and adjusting properties.
Also, you can highlight both the chart and the shape (Ctrl-Multiple Select) and lock the two together so your Shape will look like it's a part of the chart and is behind the components.
Of course, the shape will be behind the whole chart itself (by setting the appropriate Z-value, which you may find by simply clicking on Record Macro and running the formatting once to get sample code) but since the chart's background is transparent and so is the plot area's it'll look as if the rectangle's behind the lines and all.

a programmatic way to add vertical and/or horizontal line to the chart?

I wrote this up to showcase how to create 2 charts on the same worksheet programmatically.
http://blog.oppoin.com/cookbooks/buttons-forms-and-charts/lesson-25a-2-datasets-of-10-data-points-each-draw-2-graphs-in-2-charts/
I received a request from a student to show how I can also add a vertical or a horizontal line programmatically to the charts.
I googled around but I can only find manual ways as described by John Peltier.
Was wondering if there is a programmatical way to do this.
you can manipulate a single Series object and its properties, thus you can give it a specific chart type thereby enabling you to add a line vertically (column diagram) or horizontally (same value for all X values, thick line chart type. or 2 stacked column series with the bottom one hidden).
So what you do is add a Series object to your Chart object and give it values and chart types so it shows as a line (horizontally or vertically).
It can be quite complicated, but also very simple, which depends on your current chart at hand and how fancy you want this to be.
PS: I see in your blog you don't declare your Subs Public or Private, which might be a good thing to do anyway...