Re: Charts (was: New Graphing Tools)
Ricardo Moran <[email protected]>
| Newsgroups | gmane.comp.lang.smalltalk.squeak.squeakland |
|---|---|
| Message-ID | <CALr=5n345RXU53ZUcDpXfcrrB6oC1beqr5pMACcBakejLyQi_w@mail.gmail.com> |
Hi Steve, thanks for your feedback :) > Nice work. I like the idea of adding a number line. Some thoughts comments > and questions: > > If I understand your implementation, you have a horizontal and vertical > scale. Then you for each scale you select the "current object" you wish to > operate on, to sets its vertical/horizontal position to the "current object > position in chart" for each scale. > Yes, that is correct. > > I think it would be better if you could somehow set the playfield's "scale" > based upon the number line(s). When you add a scale to a the playfield, > the objects in that playfield have their X and Y values set to the scales > you added. Then if you "move forward by | N" it moves forward not by N > pixels but by the scale settings. > Well, that was my initial implementation, but as I recall Bert argued that it was too complicated to add another scale on top of existing scaling. And I have to agree with him, not only because this way is a lot less work :) but because it is also less error prone, my last implementation required patching a lot of important methods. Also, I think changing the scale of the playfield based on the number line could cause confusion. If we follow that direction what scale would a playfield use if we add two number lines? The opposite is also true: having a different independent scale for the playfield and for the number lines can cause confusion as well (as Randy pointed out). So I think this is the simplest posible implementation: the only responsible of transforming from one scale to another is the number line. > > Another possible approach is to have a collection for each "scale". Then all > objects in that collection will have their X, Y values set to and use those > scale(s). > > It would also be nice to have "set of scales" as one object (an X and Y > scale) and one collection to make it simpler to add to both in one step. > I'm sorry, I couldn't follow you... > > - Perhaps have an option to show 0 (or not). This would be useful for > when you have two axis that intersect at 0, as it would look better if we > didn't show the 0 labels. > > Yes, that's something I thought too. > > - When I change the *Line's min val* it changes the max value (and vica > versa). Hmmm, okay I think I'm beginning to understand why you did this. I > was used to setting the min and max value for the axis and having the scale > adjust as opposed to the scale setting the max value (well "Invert always > invert" ;) Have to think about this. > > Mmm... I don't remember why I did it like that. I guess I thought the scale was more important and it should be fixed, but I can change that if you feel it should be the other way around. > > - The labels seem a little too close to the number lines. > > True. I'll fix that. > > - It would be nice to have tiles to specify the font and size for the > labels. (Or course it would be nice to tiles to specify font, size, > centered/left flush|right flush|centered, for all text objects :) > > Mmm... I could add those tiles to the text objects but I'm not sure of adding them to the number line. Maybe I could add the "collections" category to the number lines and you could iterate over its submorphs changing whatever property you like. In fact, I think that could be added to all objects because all of them can behave like a collection. What do you think? > > - How can you set the arrow head for the negative direction? > > Well, you can't :). But that's easy to fix. I don't remember who did but someone told me that the axis with the two arrow heads was confusing because it is supposed to point to the direction of positive infinity, but I always thought the arrows represent the axis going on forever, so I removed the negative arrow head at the time. I don't really know what is the correct meaning of the arrow heads but I could add a preference to turn the negative on/off. Cheers, Richo > Stephen > > On Sun, Oct 16, 2011 at 8:16 PM, Ricardo Moran <[email protected]>wrote: > >> Hi guys, I'm trying again with the graphing tools. It's been a while since >> I worked on this (sorry about that) but I really want to see them >> integrated. >> >> So now I'm following Bert's suggestions and I'm trying with a less general >> approach: I'm not introducing a new scale on top of the existing one, >> instead I just added a "current object" slot on the number lines, and a >> "current object position in chart" slot that transforms from squeak's pixel >> to the number line scale and viceversa. >> >> The implementation is much simpler than before but it's more uncomfortable >> IMHO. I think it would be best to have two "transform" functions accepting a >> number as argument and returning it transformed from one scale to the other. >> Unfortunately, it seems Etoys doesn't support this kind of functions nicely, >> all the examples I could find (such as #color:sees:) seem to be a little >> hacked and I wasn't sure if following that path was the right way to >> proceed. >> >> I think the best would be for you to test it and tell me what you think. >> I'm attaching a project with the new number lines. >> Thanks! >> >> Richo >> >> P.S. I also renamed the project to Charts as Bert suggested >> >> _______________________________________________ >> squeakland mailing list >> [email protected] >> http://lists.squeakland.org/mailman/listinfo/squeakland >> >> > _______________________________________________ squeakland mailing list [email protected] http://lists.squeakland.org/mailman/listinfo/squeakland