Change Legend Font Size

TeeChart for Java (NetBeans, Eclipse, Android Studio, etc)
Post Reply
DaveSav
Newbie
Newbie
Posts: 18
Joined: Wed Jun 15, 2011 12:00 am

Change Legend Font Size

Post by DaveSav » Fri Jan 04, 2013 11:21 pm

Is there a way to change the font size of the Legend?

In testing (with Galaxy S3), I have a Pie chart with 18 entries. The Legend is hard to read as the text is too small. I thought I would change the data and group everything below 5% into an 'Other' entry, which left me with 14 entries. I expected the font size to increase as it had more space, but nothing happened.

I also looked for something like

Code: Select all

tChart1.getAxes().getLeft().getLabels().getFont().setSize(10);
from the answer given at http://www.teechart.net/support/viewtop ... ize#p55692 but couldn't find anything.

Here is the 'Before & After' image:
Legend_TextSize_Issue.png
Legend_TextSize_Issue.png (9.2 KiB) Viewed 3085 times
Please advise on how to make the Legend text readable

many thanks

DaveSav
Newbie
Newbie
Posts: 18
Joined: Wed Jun 15, 2011 12:00 am

Re: Change Legend Font Size

Post by DaveSav » Fri Jan 04, 2013 11:37 pm

Having said that;

The above example is using Galaxy S3 as a test device, which is XHDPI

The below image is from a test using Galaxy Ace, which is MDPI, and that looks fine. Could it be to do with how TeeChart renders XHDPI?
Legend_TextSize_MDPI.png
Legend_TextSize_MDPI.png (5.65 KiB) Viewed 3140 times

Yeray
Site Admin
Site Admin
Posts: 8738
Joined: Tue Dec 05, 2006 12:00 am
Location: Girona, Catalonia
Contact:

Re: Change Legend Font Size

Post by Yeray » Mon Jan 07, 2013 12:36 pm

Hi Dave,
DaveSav wrote:I also looked for something like

Code: Select all

    tChart1.getAxes().getLeft().getLabels().getFont().setSize(10);
You are trying to modify the legend font, not the left axis labels font. Try this:

Code: Select all

tChart1.getLegend().getFont().setSize(20);
TeeChart draws the text without considering the pixels density, that's why a text showing fine in a screen could look too small in another.
I'll add to the wish list the possibility to improve this so the different densities can be considered.
Thanks for reporting it.
Best Regards,
ImageYeray Alonso
Development & Support
Steema Software
Av. Montilivi 33, 17003 Girona, Catalonia (SP)
Image Image Image Image Image Image Please read our Bug Fixing Policy

DaveSav
Newbie
Newbie
Posts: 18
Joined: Wed Jun 15, 2011 12:00 am

Re: Change Legend Font Size

Post by DaveSav » Tue Jan 08, 2013 11:25 pm

Thanks Yeray,

I tried your setsize(20) answer and, although it made the xhdpi legend text more readable, it also scaled up every other dpi, which made the screen look stupid. Images are below...

I would say that this issue should be removed from the 'wish list' and added to 'urgent action', as this affects every serious user of your solution.

(Note: Different devices, different data)
Left device is MDPI, Right device is XHDPI
hmdpi_difference.png
hmdpi_difference.png (64.19 KiB) Viewed 3038 times
Thanks

Yeray
Site Admin
Site Admin
Posts: 8738
Joined: Tue Dec 05, 2006 12:00 am
Location: Girona, Catalonia
Contact:

Re: Change Legend Font Size

Post by Yeray » Wed Jan 09, 2013 1:07 pm

Hi Dave,
Yeray wrote:

Code: Select all

tChart1.getLegend().getFont().setSize(20);
DaveSav wrote:it also scaled up every other dpi, which made the screen look stupid
I'm not sure to understand what else apart from the legend texts could the call above be modifying.

To set a font relative to the sceen dpi, you could try the following:

Code: Select all

		DisplayMetrics metrics = new DisplayMetrics();
		((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metrics);
		tChart1.getLegend().getFont().setSize((int)(tChart1.getLegend().getFont().getSize() * metrics.density));
Best Regards,
ImageYeray Alonso
Development & Support
Steema Software
Av. Montilivi 33, 17003 Girona, Catalonia (SP)
Image Image Image Image Image Image Please read our Bug Fixing Policy

DaveSav
Newbie
Newbie
Posts: 18
Joined: Wed Jun 15, 2011 12:00 am

Re: Change Legend Font Size

Post by DaveSav » Wed Jan 09, 2013 9:38 pm

Yep, my bad.

I'd actually come up with a more long-winded approach, but yours looks better!

Code: Select all

DisplayMetrics metrics = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(metrics);
                switch(metrics.densityDpi){
                     case DisplayMetrics.DENSITY_LOW:
                         chart.getLegend().getFont().setSize(10);
                                break;
                     case DisplayMetrics.DENSITY_MEDIUM:
                         chart.getLegend().getFont().setSize(12);
                                 break;
                     case DisplayMetrics.DENSITY_HIGH:
                         chart.getLegend().getFont().setSize(20);
                                 break;
                     case DisplayMetrics.DENSITY_XHIGH:
                         chart.getLegend().getFont().setSize(24);
                                 break;
                }
Looks like we need to apply it to the axes text as well.

Many thanks

Dave

Post Reply