How to position JavaFx chart axis tickmark label - javafx-2

I'm pretty new to JavaFx. I'm using a LineChart with a NumberAxis, and would like to change the position of the tick mark labels on the X axis, so that the tick mark labels are on the same line as the tick mark, and immediately to the right of the tick mark (and not centered directly beneath the tick mark)? I don't see an obvious way to get this done. It looks there is no control over the tick mark label position, except rotation. I can create my own axis extending from the ValueAxis, but still I don't see a way to get at repositioning the tick mark labels.

You would have to extend Chart to do this.
public abstractclass YourCustomXYChart extends Chart {

Related

Get the vertical scrollBar object of certain column in pyqt's QColumnView class

There is a QColumnView class as shown belown. I use QFileSystemModel as its data model.
As you can see, there are four columns and three vertical scroll bars and a horizontal scroll bar.
It's easy to get the horizontal scroll bar by using self.ui.columnView.horizontalScrollBar().
But when I use self.ui.columnView.verticalScrollBar() to get the vertical scroll bar, it doesn't work properly.
So I would like to know how to get certain column's scroll bar.
When I connect a function to the horizontal scroll bar's valueChanged event by self.ui.columnView.horizontalScrollBar().valueChanged.connect(self.sync) and I move the horizontal scroll bar, the self,sync is executed.
But when I use self.ui.columnView.verticalScrollBar().valueChanged.connect(self.sync), whatever vertical scroll bar I move, the self.sync cannot be executed.

How to make a vertical slider?

I need a vertical slider similar the standard slider. Is there a way to modify the existing one or do I need to make a new one?
The standard slider would work for me. I just need it to work vertically.
Perhaps I should better clarify my issue with the standard slider.
Yes, I can drag the size of the slider and it will be vertical. The problem is that when you select the value of the slider to show the text gets buried in the low side of the slider when you slide it down all the way. It essentially gets cut off and only shows the top half of the slider value character. I find no way to correct this by moving the shown text up a little so it all shows. I see no way to change text vertical or offset position in the properties setting.
The text settings only allow you to change the text format to right, center and left justify. There is no setting that can move the text up to prevent it from being cut off when the slider is all the way to the lower or down position.
The value text shows ok on the top of the slider. The problem is on the bottom side when you set the slider to be vertical.
It looks like the the show value setting does not place the value on the top layer of the slider and it gets hidden behind something else in the slider object.
LC9, Windows 10
I think I'm understanding your question. If you just resize the horizontal slider control so that the width is narrower than the height, the orientation of the slider control will automatically change to vertical.
Apparently it is a bug in this version of LC. At least in Win which is where I am testing.
Putting the scrollbar vertically cuts the value when it reaches the bottom.
But I found a solution so that it does not cut. Play around with the properties of the font. Such as size and family. In my case it worked fine by lowering the font size by one pixel.
Default: Segoe UI font, size 12
I just set the size to 11 and it doesn't cut anymore.
For what it is worth, I do not see this issue on a Mac. A vertical slider works as advertised. Font size makes no difference.
Are you saying that in the horizontal mode, you do not see this, but when changed to vertical, you do?
Try creating a scrollbar and a text field.
Set the scrollbar's showValue property to false and copy the following script to your scrollbar. Note that your field must be called "scroll value".
on scrollbarDrag pNewPosition
local tLoc
lock screen
# The Current Loc of Field
put the loc of field "scroll value" into tLoc
# New Position of scrollbar
put pNewPosition into field "scroll value"
# New Loc of Field
put the mouseV into the item 2 of tLoc
set the loc of field "scroll value" to tLoc
set the left of field "scroll value" to the right of me
unlock screen
end scrollbarDrag

How can I move the field name to the bottom of graph in Tableau?

I'm using Tableau 9.0.2 to generate graphs and I can't for the life of me figure out how to move (ideally drag, right?) the field name for my x-axis from the top to the bottom of the graph, by the units, where it should be.
I'm attaching a picture because it's probably the easiest way to make clear what I'm trying to do, given this is a question of positioning:
This Tableau graph has the field name "Iterations" at the top of the graph, not the bottom, where it should be. While this might not seem like a huge concern, it means that these graphs are not immediately exportable.
How can I move the label "Iterations" to the bottom of the graph, next to its axis?
The answer currently offered below allows for manual image modification within Tableau, which is unsatisfactory. It seems bizarre to me that the default, unchangeable behavior of Tableau goes against standard practice in graphing (labels next to labelled).
If the goal is just to get the headers and the axis label in the same place, one alternative would be to move the headers to the top of the chart (as opposed to moving the axis label to the bottom).
Go to Analysis/Table Layout/Advanced... and uncheck the option "Show innermost level at bottom of view when there is a vertical axis". This will move your Iterations headers to the top of the chart, and now everything will be in the same place.
If that's not an acceptable alternative for you, here's the only (kind of unfortunate) solution I can think of:
Place your worksheet in a dashboard.
Right click the axis label and select Hide Field Labels for Columns.
Create a text box with your desired axis label (in this case "Iterations") and place it below the chart. Your headers and your DIY, home-brewed, hacktastic axis label will now both be at the bottom.
Hide the columns axis label then enable / edit the caption within the bottom of the dashboard. Then center the value of the caption. Should look better.

How to get the size of sprite in a sprite "Sheet"?

my problem is getting the Sprite in a Sprite "Sheet".
public class Blocks extends Sprite{
public Blocks() throws IOException
{
super(Image.createImage("/blockSprite.png"),20,30);
}
}
"the blockSprite.png contains images of Sprites, many sprites in 1 image"
The problem here is using this line of code, how I am supposed to get the Sprite size/dimension in the image?
Sprite Sheet:
Width - 162
Height - 280
I want to know the width/height of the sprites in the sheet? and how to determine the width/height of the sprites in a Sprite Sheet?
You do know how many sprites are there in each row and column right? then just divide the width with how many sprites are there in a column and divide the height with how many sprites are there in a row.
(I may get the column and row wrong, I'm not native English, but you should just switch the row/column if the first try didn't work out)
One way is to use an image editing software (say GIMP, its free).
What you have to do is,
Open the image in GIMP
Click on the Rectangle selection tool (or press r), your mouse will turn into a cross hair
Now when you click on the image, in the tool box, under tool options you will see the X-Y position of the point you clicked
Cool, now draw a rectangle around the sprite that you want. Zoom in before you do this, so that you are actually selecting the whole
sprite.
Now you will get both the X-Y coordinates of the top-left corner of the rectangle that you drew and the height and width of the image.
After that, just use https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Using_images#Slicing.
Have fun!!

Why is Autofit Labeling greyed out?

I Have created a bar chart in a 2007 .xls file, but the data labels cannot be resized. When you go to the "format Data Labels" and then click on alignment, the Autofit and Internal Margin option is grayed out. Anyone know why?
Short version: It is greyed out for chart text, because it the option doesn’t apply.
Long version:
This is because on a chart, chart text do need to use margins, rather you can you can just move the text., and set its X and Y position. For example take the Chart Title, if you want more space to the left, just click and drag the title to the right. If you want the chart title to be bigger you just set a larger font, you have complete control over the title, as well as all other text on that chart, axis titles, legends, data labels, etc.
Internal margins are meant to be used when you don’t have complete control take for example text in a shape. If you insert a shape in your workbook, and add text to it, you cannot just pick the text up and move it to the right if you want more space on the left, so you can set the margin.
Here's a trick that worked for me:
My problem was: I added more text to the axis title and it was too long for it's original shape so some text went into second line.
My solution: I type the complete text somewhere else, copy the text, double click on the axis title and delete the original text -- the cursor would still be there -- now insert the copied text. Done! They are all in one line!
Partial solution to resize label to a single line: Data labels in a chart will often wrap themselves, when you dont want them to. They would often seem better in a vertical single line above the graph item. Reset them to one single line by editing the text in the label, deleting the Excel imposed return, and replace it with a space. The line, and label box, will resize to fit a single line. However because you have "manually interfered with the lable, it will no longer update for changing graph data. You would have to double click each lable then reset it. Most annoying.
A way around it is to make the chart area big. The data label boxes will resize to fit the words in one line. Then make the chart small (not the chart area).
Manually insert a textbox into the bar chart and type in the label that way. It's annoying and labor-intensive, but it works.

Resources