Predicted vs observed plot with diagonal line and deviation - excel

I am trying to plot predictions vs observations in a scatter plot showing the predicted values in x and the observed in y, so a perfect fit should be shown in the diagonal. Is there any way to plot that diagonal in excel as a line, so it is easier to see if the result is close to the ideal? Also, my model has a standard error that I would also like to show as upper and lower line. Something like this:
Any ideas how I could add the lines in excel? Thanks !!
[edit]
This happens if I add a new series to draw the diagonal line as a line plot:
Where 'line 1' gives me what is shown in the center image after I add a new series, and 'line 2' the one of the right if I add the cells to a existing axis. What I'm doing wrong? thanks

Create a new series for each line, with just two points for each series.
For the diagonal, the first point is at the intersection of the axes and the second is at the top right of the charted area. Format the series with a suitable line and no data points.
For the upper and lower lines, same technique but the first point is where the line intersects the y or x axis respectively.

Related

Excel data representation, Axis labelling non-numeric

I wanted to display my data from my Excel spreadsheet graphically, in the form of a scatter chart.
I know that Excel can do this, but there is one "special feature" about my coordinate system of my graphic, and that is that one of the axes should be labeled with "words" (instead of numbers) to match my table similar to the picture. But I am not sure if Excel can process this at all, I guess that Excel can only work with numbers on the axes.
I would be very grateful for any help and tips and also alternatives!
By definition, the axes in an XY Scatter plot are numeric. But your desired chart can easily be created by adding a helper series to the plot. Assuming the current Y values for the other series are the numbers 1 to 6 for even positioning, you can use a range with Y values 1 to 6 and X values of zero and add that data range as a new series to the plot.
The plot points will sit right on the Y axis. Remove the Y axis labels in the Axis formatting options. You can then use data labels from the worksheet and position them to the left of the plot points of the helper series. Finally, format the markers of the helper series to have no fil and no line to make them invisible.

plt.axvline labels exceeding limit of plot problem

full - clearest image, shows the labels extending out the right of my plot
"zoomed" - highlighting why this is a problem as the plot becomes unreadable when selecting and plotting subset of the x-axis range
I'm working on some data where I have plotted a spectrum and have added vertical lines to specific positions. I have labelled these lines but my problem is that if I want to "zoom in" by decreasing my x axis range, the full list of labels for the vertical lines are still plotted resulting in an unreadable plot.
I iterate through a list of x positions and labels for my vertical lines and plot as follows:
for x_pos, label in zip(list_x_pos, list_label):
plt.axvline(x=x_pos)
plt.text(x_pos, y, str(label), rotation=90)
plt.xlim(2, 5)
So, because my "x values" go > 5 the resulting plot is a tiny figure with a row of the labels extending out from it.
The only solution I can think of is to slice my list_x_pos but this will crate other problems for me so ideally looking to find a way to just show the labels within the range of the plot.
Hope I've made sense!
Thanks,
Olie
You can use plt.text(..., clip_on=True) to force texts outside of the box to not be displayed.
Resize the axes first and then plot the vertical line.

How can I add a vertical line to a line graph in excel?

I have a list of years from 2019-2098 that I want to be the x-axis values. The y-axis will be from 0 to 1 for probabilities. The line graph will measure the survival probability curve in relation to years. The issue is that I need a vertical line to reside on the mark for year 2042. Is there a way to do this? Everything I have found online doesn't work! The photo is what I get from doing an online example. It produces a vertical line but not in the correct spot.
You could add a separate data series that consists of (2042,0) and (2042,1).
Graph them as a scatterplot on top of your existing data. If needed, go to Change Chart Type and set the appearance to connect the two points with a line where the points don't show. Example: Scatter plot without points showing.

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.

How can I customize the horizontal axis values in excel?

So I am trying to make a nice line graph for some data that I have. Each line has 100 data points, so excel automatically makes the horizontal axis from 1-100. I want to change the min/max values for the horizontal axis from 0-1, without moving the frame of the graph (i.e. without zooming in the graph). I just want to divide the horizontal axis numbers by 100 in order to rescale the time. This is what my graph looks like now:
http://imgur.com/33KD7RY
So I want to change the numbers on the horizontal axis to be fractions or decimals in the range [0,1]. Does anyone know how I can do this, or any other graphing software that would allow me to do this (I have tried using google sheets, but they have less options to customize axes than excel). Thank you!
Did you use two column to plot one line and did you use the Scatter with smooth lines chart type?
Have one column (X) go from 0 to 1 using intervals of 0.01 and your data in your second column (Y). When using a scatter with smooth lines chart type your answer should look like this:
image graph
Plotting your second line in the same chart can be done the same way by adding it through the 'select data' options of the chart.

Resources