sal0max / currencies

An exchange rates currency converter for Android
GNU General Public License v3.0
222 stars 23 forks source link

chart - add grid, x- and y-axis #30

Open aisbergde opened 2 years ago

aisbergde commented 2 years ago

The chart would be more useful if it would contain a grid, values on y axis and date on x axis. Also the precision should be higher in some cases like here:

Screenshot_2022-07-03-19-17-18-662_de.salomax.currencies.jpg
sal0max commented 2 years ago

The chart would be more useful if it would contain a grid, values on y axis and date on x axis.

I chose to not show labels on both axis for aesthetic reasons.

Are you aware that you can scrub the chart? Scrubbing is when you tap and drag your finger along the chart. The "start" data (the one on the left side of the chart) will get updated accordingly and show detailed information on your selected date. Also the difference from that selected date to the current one will be calculated and displayed in the center.

If this doesn't solve your issue, you might further elaborate your use case.

Also the precision should be higher in some cases

All the APIs in use only deliver daily historical rates, so there's no way to increase the precision.

sal0max commented 2 years ago

Now that I re-read your request, I realized you probably didn't mean the chart but the 0,133 Euro for average, min and max.

I don't think higher precision would be of any use. What difference does it make to know that the HRK-to-EUR rate changed from 0.132909 to 0.133146? Keep the purpose of this app in mind, like stated in the README:

Currencies is a simple and straightforward currency converter. It is not intended to be used for realtime financial business, rather to be a handy companion e.g., on vacations.

Basically, HRK is more or less linked to the EUR, as Croatia is member of the European Exchange Rate Mechanism. So no big surprise here.

Anyway: In cases with a very weak currency against a much stronger one, it is always better to compare rates "strong-to-weak" which should in this case give you avg: 7,521 | min: 7,474 | max: 7,581

aisbergde commented 2 years ago

scrubbing is fine and helpful, but it also doesn't solve my issue.

In General I also love minimalistic graphics, without graphic noise. Regarding diagrams and charts I am a big fan of well designed charts, I like ibsc rules rules or templates: https://www.ibcs.com/de/resource/chart-template-07/

Esthetic is important, and functionality is more important. I think your charts are too minimalistic. With a small effort important information could be added and the chart would be more useful.

In the case I posted one point is to higher the precision to make a clear different between higher an lower value. This could be depending on content. Normally a precision of 3 is fine, but in some cases (my example) a precision of 4 would add value, but would not add too much "noice".

A grid and values on the y axis (and maybe also on the x axis) would also add many value for me. But there could be options to show or not show, because other users (like you) prefer more minimalistic charts.

Your charts are more like sparklines. Sparklines are great to visualize trends, especially if there are not so much pixels available.

In General I like the functionality of your app, except the too minimalistic charts. That's why I added the feature request. Maybe my brain works differently than yours regarding charts and diagrams. Here is an example which may be is less esthetic in your terms, but it has a better functionality in my terms:

Screenshot_2022-07-02-19-33-32-775_com.digitalchemy.currencyconverter.jpg
sal0max commented 2 years ago

Your charts are more like sparklines. Sparklines are great to visualize trends, especially if there are not so much pixels available.

That's a bingo! I'm using the robinhood/spark library. And just as one would expect, it has not way to add axis descriptions or a grid.

Anyway, thanks a lot for your explanation. I see your point now and the idea with an option to switch to a "scientific chart" mode would probably be a satisfying solution. However, this would mean one would have to re-implement the chart with a new library like AAChartCore-Kotlin or MPAndroidChart. Those libraries are quite mighty and take their time to get familiar with and implement them.

So I'll keep this issue open and will think about it, too. But it likely won't make it for the next release, yet.

aisbergde commented 2 years ago

Very often I am involved in reporting projects - my business is "Business Intelligence". And I like sparklines and sparkbars to generate overviews. I used and propagated them even before they get mainstream. Because of the possibility to generate very high "information density per Pixel".

BTW, this place here would be a typical place to use sparklines (if it would be a report): You have a list of currencies, pixels are limited and a sparkline per currency would add a lot of information.

Screenshot_2022-07-08-07-40-06-282_de.salomax.currencies.jpg

And if you use these kind of spark libraries, then I understand the technical limits.

In terms of information density it is some kind of "wasting pixels", because there are so much pixels available. Worst example for wasting pixels are speedometer visualizations. Or 3D effects, not adding information.

Sorry, if this seams to philosophical, I am a bit fixed on optimizing data vizualisation :-) But if you are interested, look at SUCCESS rules for perfect business vizualization: https://www.ibcs.com/de/ibcs-standards-1-2/

to be constructive:

An adaptive higher precision could improve the user experience, not changing the library. For example you could analyze the minimum and maximum in the current context and use an adaptive precision, to ensure significant differences between minimum and maximum when displaying values. For example: at least it should be possible to distinguish between the 2 (or better 3?) last digits of minimum and maximum value. Some easy mathematic depending on (maximum - minimum) could define the precision.

sal0max commented 1 year ago

Rate precision in timeline view is now adaptive 10c98b3ffec26d8275ea5ac87e1480054d9c27c6.

screen_c909246db005382e8230