Is there any way to access and manually set the z-index (for lack of better word) of the markings lines in a flot chart? Right now I am creating some markings on a line chart to use as thresholds (basic horizontal lines set to a specific value) and it's working great except when the markings happen to be lined up perfectly with the chart's grid lines. When that happens the grid line overlaps the marking line so it's hard to see the marking line. What I would like to do is manually set the marking line to be on top of the grid lines, but I can't figure out where to set that option (or if it's even possible).
Here is the markings array that I am creating (dynamically):
markings: [ { y2axis: {from: -20, to: -20}, color: "#848484", lineWidth: 2.5 },{ y2axis: {from: -12, to: -12}, color: "#848484", lineWidth: 2.5 } ]
Here is an image of the result (you can see the threshold at -12 is buried under the chart's gridline and appears almost like 2 thinner lines):
Thanks for any help or advice you can offer!
When drawing on the canvas there is no z-order. What is drawn later is drawn over older stuff. And when you look at the flot code (in the drawGrid() function) you see that the markings are drawn first.
There are a few different solutions / work-arounds here:
You make a local copy of the jquery.flot.js file and change the code so that the markings are drawn last in the drawGrid() function.
You remove the markings and instead generate a simple data series with the two endpoints and add it to your dataset (preferably before your real data series). Then your markings data series is drawn after the grid and before your real data series.
You draw the markings manually after flot draws the grid and before flot draws the plot for the data. (See the documentation.)
Related
I have a simple graph_objects.Figure() with multiple traces and multiple y-axes. Each axis has a single trace (time average of underlying data) with a corresponding min-max area below showing the range of the data.
Problem is that the shaded area coming from the min-max data starts to hide the important trace when I plot more than 1-2, see image below:
It seems to me that the draw order is decided by the axis-number, first yaxis1, then yaxis2 etc., but I would really like to specify that all "shaded area" traces stay at the bottom, making the lines clear and always 100 % visible.
What I have tried:
Style parameter zIndex: not accepted by graph_objects.Scatter
Tie the "shaded area traces" to the first axis, but then they are plotted using that axis range of y-values, leading to a completely wrong result.
Reducing the opacity: last resort solution
So, is this possible using Plotly Dash?
Hi, I have trouble with my line chart here, the line chart is overlaping and it makes another line is not visible or covered up.
If the data is so similar then the lines will overlap.
One thing you can start with is using a false y-axis zero, starting the chart at, say, 50%, this may provide sufficient separation if the values do have differences.
Is this specific type of line chart necessary?
A 3D Line chart might get past the problem.
Image of a 3D chart with similar data in 2 series
If you want to stop similar/identical lines overlapping without changing their actual values, you're going to need to plot one of those lines on a different scale:
in the 'chart design' tab hit 'change chart type'
change it to 'combo chart', ad set both series as lines but in one of them, tick the box for 'plot on secondary axis'. Or, you could set one series as a different type of chart, e.g. a bar chart.
If both are lines and both axes default to the same scale (which is quite probable), you'll want to edit one of them to adjust the scale. Right click on a chart element and hit 'format', then select either 'vertical axis options' or 'secondary vertical axis options' from the dropdown, then click the fourth icon (little bar chart) and adjust the minimum and/or maximum bounds.
Hopefully that should separate the lines out without changing the values they actually depict. However, if it really comes to that, it might be easier to set them as two different charts. Certainly would make it easier to interpret the values.
Im using Excel for Mac 2011 and I have the following figure
I would like to still show the bubbles outside of the available chart area, while keeping the maximum and minimum axes values unchanged.
Create an identical chart with the same data, but with axis limits that show the full bubbles. Then set all the formatting in the chart other than the bubbles to the equivalent of "none", i.e, no axis labels, chart outlines, gridlines, chart and plot borders, background color, etc.
With very careful sizing and positioning of this bubbles-only chart over the original chart, you can get the bubbles to extend beyond the plot area of the original. If the size or position of a bubble is a little off, modify the overlay chart's data by the tiny amount needed to get the bubble to cover the underlying original bubble. Turn off the formatting for the underlying bubbles as last step.
NOT programmatic, very trial and error, and fussy, of course, and I hope someone comes up with a more elegant way to achieve your goal. But I was able to get it to work on my Windows machine.
I saw some Core-plot sample. Is there anything equivalent that will do my task easily? I also want to know feasibility with Core-plot in iPhone. (any issues with core-plot)
I want to have multi-colored vertical bar chart. Is it possible to customize Core-plot framework. Using only one barplot can we have multiple segment on it.
Thank you.
Naveen Thunga
To make a stacked bar plot, you need to make multiple plots, one for each segment. On all but the bottom plot, set barBasesVary to YES. The datasource will ask for a third field called CPTBarPlotFieldBarBase which is the base value for the bar. You will have to do the stacking calculations yourself.
The horizontal lines can be drawn using an additional bar plot. Give the bars a short height (tip - base). You can make the width wider than the others if you want--each plot is independent.
The space between the bars depends on several factors. By default, bar widths are specified in data coordinates. For example, if the bar locations are one unit apart, a bar width of 0.5 will make the bar width and the space between the bars equal; a bar width of 0.75 will make the space 1/3 of the bar width. The actual width in pixels depends on the size of the graph and how many bars are visible (determined by the plot range along that axis). If barWidthsAreInViewCoordinates is YES, then bar widths are given in pixels which keeps them the same apparent width as the plot range changes, but the space between them will change with the plot range.
I'm using Excel 2007 to create a log-scale chart of numbers (specifically the Zimbabwean dollar exchange rate) over time. I'm using an x-y scatterplot and noticing one odd quirk.
The range of y values (numbers) spans a factor of about 10^30. On every chart I make using this data, half the gridlines are missing. Specifically, only the gridlines corresponding to the largest values show up. In fact, regardless of the total range only the top factor of 10^13 or so have gridlines. This is not dependent on the log base.
Am I doing something wrong? Is this a known bug? I can't find any references to this issue on google or microsoft's bug reports.
Silly work around as well, but if you are going to be presenting your graph in Powerpoint, you can make the background color of the graph "no fill" and then when you paste it into Powerpoint (I paste it as a PDF). You can draw grid lines and match them up with the ticks on the y-axis. Arrange your graph "bring to front" when you are finished drawing so that the lines won't appear in front of your data. You can group it all to make sure the lines don't shift while making your presentation and so that they re-size properly if you re-size your graph.
I'm having the same problem, it's definitely a bug.
Try a sequence 1, 10, 100, 1e+12, 1e+30 vs 0..4 and plot x,y scatter, and clearly the scale grid is messed-up even in linear, and in log is the behaviour you described.
My workaround was to make a transformation of the values and depict them scaled down (by a Million factor). That way the data the graph is handling is never above 10e9 (the value I started to hit issues).
So, my suggestion is: graph a Log version of the data (and clearly make a legend for it)
I was able to replicate your problem and come up with a pseudo-workaround.
The formatting goes a bit funny, but all the lines show up if you right-click on the axis, select Format Axis. Under the Axis Options, there is a Horizontal Axis Crosses setting. Changing it from Automatic to Maximum Axis Value causes all the gridlines to appear.
Ran into same thing: Will not show log grid lines for y-axis ranging below 1e-7. Have need for dynamic range of 1e5 down to 1e-15. Tagging auto or max will show grid, but puts axis labels in non-useful place for display.
My workaround: used Open Office to get what I needed. Could not find useful solution in Excel 2010.