How to bring Excel chart data labels in front of axis - excel

I created a custom data label series using "Value From Cells" to have a label at the end of the chart displaying the current value. Unfortunately, the axis labels are "on top"/"in front" of the data label. Is there any way to change this (VBA or otherwise)?

I just came up with a kind of absurd workaround. I'll do my best to explain it here in case anyone else comes across this.
To make this easier, the point I want the data label for will be called A. This is the latest value of the original series that should be labeled off to the right of the chart.
I removed the old data labels.
I created a scatter plot with one point: (0,y). The y value was set to A as a percentage of the minimum to maximum y-axis range. So if A is 3 and the y-axis range is -2 to 10, then the y-value would be 3/(10 - -2) = 3/12 = .25. So the result would be a scatter plot with one point at (0,.25).
I made everything on the scatter plot chart (e.g. plot area) invisible EXCEPT the one scatter plot point. This gives me a floating scatter point that moves up and down the y-axis, depending on the percentage calculated above.
I added a y-axis to the scatter plot, and set the minimum to 0 and the maximum to 1. I then removed the axis. This was only to set that min/max.
I moved my scatter plot so that the top/bottom of the plot area was exactly even with the top/bottom of the plot area of my original chart. So now, I have a single point that is moving up and down along the height of the original chart's plot area. Its up/down position is determined by A, and it will line up exactly with the y-position of A (because that's how I designed it).
I added a data label to the scatter plot and hid the scatter plot series. So now, I have my data label in the correct up/down position (lined up with the A).
Change the data label "Label Options" --> "Label Contains" to "Value From Cells". Then reference a cell with A's value that we want displayed (instead of the % value we used to get the up/down position right).
Last step is just to move the scatter plot left/right until it's in the perfect spot to the right of the plot area, and done!
Then repeat that miserable process for 16 charts with copy/paste when possible. Hope this helps someone else!

Related

How do I control which Excel chart axes pair I plot a data series to?

I have three data series (x-y) I want to plot as scatter graphs in Microsoft Excel.
I want the first series to be plotted using the bottom x-axis and left y-axis.
I want the second series to be plotted using the top x-axis and the left y-axis (again).
I want the third series to be plotted using the bottom x-axis and the right y-axis.
So I need four different axes on the four sides of the chart area. Excel seemingly can place primary and secondary horizontal and vertical axes okay but I can't seem to control which combination of these my data series are plotted to - only whether they are "primary" or "secondary" which isn't enough detail.
Any help would be greatly appreciated!
Screenscrab of chart area with the three data series present. The blue series is correctly plotted against bottom X and left Y but the orange and red series are plotted against the wrong y-axis

Excel Multiple Series Chart with Time on x-axis

I have two series of daily data, displayed on a Scatter Plot with date on the x-axis. One series is orange, the other is blue. Here is the chart:
Scatter Plot
The x-axis labels appear on the major tick marks every 100 days. I want the labels to appear on the first day of every third month.
Is there a way to get a regular spacing of x-axis labels based on the number of months in a Scatter Plot?
When I try to do this in a Line Chart I get this:
Line Chart
Note that the orange series in the Line Chart has moved all the way to the left of the chart where it does not belong.
I have a work-around.
I use a Line Plot and I enter 0's for the dates where no information exists. The plot can be seen here: Line Graph with Extra Points
This is for a deliverable so I don't want to show all those zeros. I went ahead and made the points I don't want invisible. This can be done manually (right-click a datapoint and select "Format Data Point" then select "No Line") but there are ~500 datapoints in this graph and I have about 20 graphs so I automated it with the following lines of code:
For i = 1 To A1
oChart.Chart.FullSeriesCollection(2).Points(i).Format.Line.Visible = msoFalse
Next
I was already using the variable A1 as the row where I wanted the orange curve to begin. oChart is the shape object that holds the graph.
The end result is here: Corrected Line Chart
It still seems like there should be a way to do this with a Scatter Plot and I'd appreciate it if anyone could show me how to do that.

Can't align x-axis on hybrid scatter/area chart

Please have a look at This Excel chart. Here is a screenshot:
Here is the data:
There is a scatter series of blue of dots (plus a trendline) and a green area series. The chart data are contained within the series.
The problem I have is that the x-axis values of the two series are not aligned. For example, the second and third blue dots at x = 3.1 and x = 3.8 are in the correct place along the x-axis, but in the green area series they appear to be above x = 2.0 and x = 3.3. How to fix this?
Change the Scatter to a Line Chart, then format Line Color so that there is "No Line". Add trendline.
There may be another way to do this while retaining the Scatterplot, I'm not sure, but this seems to be visually what you're looking for, but I think you will need to use a Line Chart for this unfortunately. The problem is summarized in this similar Q on SuperUser:
https://superuser.com/questions/964264/aligning-stacked-bar-chart-w-scatter-plot-data
The short answer is that your combining (unsuccessfully) a categorical series (the columns) with interval/ratio series (the line charts). So, Excel doesn't know how to plot your categories (columns) on an interval scale (the current X axis).
You can verify this by selecting Chart > Layout > Axes > Secondary Horizontal Axis > More Secondary Horizontal Axis Options. Without making any changes to the axes configuration, the second X-axis will now appear along the bottom of the chart, and you can see it is scaled differently from your Scatter data.
I.e., in the Scatter series, the data is X/Y pairs. But in your Area chart, it treats the X-values as categorical, and in this context "1.1" is no different than "Bob" -- it is a cardinal representation of the data rather than an ordinal representation.
The problem I have is that the x-axis values of the two series are not aligned.
So even though the two series appear to share the same set of X-Values, the Chart is simply incapable of treating those as the same type of data. The x-axes are not aligned because they are not the same data or even the same type of data!
All that said, if you change both series to XY Scatter, it is possible (with some extraordinary effort) to apply shading/coloring below a series or between two series, etc.
http://peltiertech.com/fill-under-between-series-in-excel-chart/
http://chandoo.org/wp/2013/02/13/shaded-line-charts-excel/
What you can do is plot the Area graph on a secondary axis. Then go to Chart -> Layout -> Axes -> Display Secondary Horizontal Axis to see the axis, right click for its properties and change the type of the Axis Type to "Date axis". This (kind of) changes the axis to a numerical type, as opposed to a category type.
However, the area graph will still be placed incorrectly too far to the right because Excel will continue to plot the series as a (kind of) category type, with its data points appearing in the centre of each category as opposed to at the correct x value like in an XY scatter plot.
To get the graphs overlaying the most correctly, you can create a Scaled-up x value series which is, say, 1,000 times the original x-values and use this for the x-values of the area plot. By scaling by 1,000 or 10,000, you eventually get the granularity to a point where it looks more like X-Y plot, but is actually an area plot, and the graphs look like they coincide perfectly.

Highlighting data range whille retaining original data label axis

So I'm not sure whether this can be done or not, but I want to highlight certain scatter plot points on my graph whilst still retaining the original axis labels. This is a little snip of my data:-
(0.5,0.525] 272
(0.925,0.95] 116
(0.975,1] 446
(1,1.025] 2840
(1.975,2] 974
(2,2.025] 1400
I have a scatter plot of the first column as my x-axis and the second column as my y-axis. Currently I'm highlighting the points that I want (such as (1,1.025] 2840by adding it as a new legend entries series, but to get it to align horizontally with the original data I've had to number all the points from 1 onwards and add the horizontal axis labels that way, so that all the points that are highlighted mask the other points behind it that contain the horizontal data labels. Is there a way of overcoming this without formatting the data for the x-axis numerically? Or a way of incorporating the data labels separately?
Just to illustrate the problem, I've attached an image at the end of this post. The columns mzRange and Frequency on the left handside were used to plot the graphs, whilst the columns on the right handside of the graph were used to highlight the points on the bottom graph. However, as the x-axis is labelled with the bin ranges from the column on the left, it goes up in a numerical fashion as seen with the numbers on the left most column, meaning I have to use the position number of the bins to then place the highlighted points (as seen with the column on the right handside of the graph that goes 18,34,36 etc) which in turn hides the information of the m/z bin range. Hope this makes sense.
The data in the mzRange is not numeric. If it is used as the data source for the X axis, it will result in the data points being numbered ascending on the X axis.
The only way to plot over a data point is to use the exact X and Y values as the original data point. You could mark the highlights in a column next to the original mzRange column and then plot the whole column.
See this screenshot:
Note how the X axis has nothing in common with the values of column B, although that was used as the data source for the X axis. The red dot highlights are placed in the rows that determine the position on the X axis. This way, the label that appears when hovering over the data point remains intact.

How do you alter the z axis length in a 3d excel plot?

I'm trying to plot 6 timeseries side by side in excel. The default 3d bar charts and surface plots almost do the right thing. The problem is the timeseries are laid on the z-axis as I expected but they're jammed so close together you can't read the labels.
I've tried changing the tick interval and re-sizing the chart. Re-sizing the chart only seems to affect the x and y axis lengths leaving the z-axis pretty much the same short useless length.
How do I change the z-axis length in Excel?
To adjust the z-axis size, do the following:
Select Layout/3D Rotation on the ribbon. A 3d rotation dialog box opens.
Ensure 3D Rotation is highlighted on the dialog's left pane and then deselect Autoscale at bottom the right pane in the dialog box.
To lengthen the z-axis, increase the Depth percentage from 100 to 200, 300 or whatever is needed to accommodate your z-axis labels.
A few other points - the graph itself is contained in a picture within the chart panel. You can lengthen the z-axis somewhat by clicking on the chart to select the chart's frame and then resize the frame.
If you're plotting time series data using the 3d bar graph, you can click on a specific bar and Excel will show you the datum value that produced the bar.
To look on the backside of the graph to see if there are hidden values, set the x-axis rotation to 135. Lengthening the z-axis alleviates the issue somewhat as it spreads the series further apart and lets you see "behind" the front series a bit better.

Resources