I've been trying to build some financial charts for the past few days, and while I managed to get the data plotted properly, I'm really struggling with customization. The runnable examples are more focused on the various ways to plot different data than changing the default look and feel, and the documentation is very comprehensive but it's easy for someone new to get lost in all the layers of depth. I'm hoping someone can at least point me in the right direction with some of these.
1. By default, plots only have a border on the left and bottom. I'd like to have a border on all 4 sides. I'd also like to move the Y axis labels from the left to the right. What I tried:
plotItem.getAxis("left").setStyle(showValues=False)
plotItem.getAxis("right").setStyle(showValues=True)
which did remove them from the left side, but didn't move them to the right, presumably because the right axis has no data associated with it. To draw the lines on the top and right, I tried:
plotItem.getAxis("top").setPen(pg.mkPen("#000"))
plotItem.getAxis("right").setPen(pg.mkPen("#000"))
which did absolutely nothing, at this point leading me to believe that those axes simply don't exist by default.
2. The grid has two types of lines with differing thickness. How can I make it display only one thickness?
3. How do I completely disable the auto-scale button that shows up in the bottom left when hovering over a plot? I never use it and it's pretty distracting when it keeps popping up.
4. When zooming out past a certain point, the plot will auto-scale the data to fit. How can I make the zoom only zoom, and only allow scaling explicitly via right-click dragging?
5. I have one main plot, and 2 smaller plots below it which are linked to it via the X axis. I want scale changes made on the main plot to apply to the smaller plots, but not the other way around. Actually, the only mouse interaction I want to allow with the smaller plots is panning, zoom should be fixed, and scaling should only work on the X axis based on the scaling of the main plot. For starters, I tried passing setMouseEnabled=(False, False) and setMouseEnabled=False when constructing the smaller plots, but they still accept all mouse input.
6. I'd like to have dashed lines on the X and Y axis following my cursor. I found InfiniteLine which seems suitable for the task, but I didn't notice and way to link it to mouse movement. Also, assuming that's doable, it would be nice to share the X line with the smaller plots mentioned above (in this case, allowing cursor position changes on the smaller plots to propagate to the main one).
7. On the smaller plots, I have a curve as my data, and some lines at fixed points on the Y axis added via plot.addLine(). Is it possible to fill the area between the Y line and certain values on the curve? Specifically, I'm plotting RSI and would like to fill the area between the curve and Y 70 point when the curve is > 70, and between the curve and Y 30 line when the curve is < 30. I found FillBetweenItem, but that doesn't seem to work with the Y lines, and I'm not sure it would be the desired behavior anyway.
Finally, not really a question but more of a bug report. Unless there are ticks present in the location, lines on the Y axis will actually overlap the axis itself. This applies to both fixed and dynamic lines. Upscaled image for reference:
http://imgur.com/xbZZwhV Any workarounds?
Sorry for the ton of questions, I struggled with it for a good while until I broke down and decided to ask for help, as I'm making no further progress at this point.