Re: [Tutor] Question about HORIZONTAL BAR CHART.....

2006-11-26 Thread Luke Paireepinart
Asrarahmed Kadri wrote:
> As far as I understand, I need to design an algorithm which computes 
> the padding between each bar (space between each bar) and the length 
> of each bar ( remember that this is a HORIZONTAL BAR CHART).
I think what you want to design is an algorithm that computes the HEIGHT 
of each bar (as it's a HORIZONTAL bar chart)
because the vertical padding, (The space between each bar) is a fixed 
number, like 20 pixels.  At least that's what i would do.
This height is dependent upon the number of data sets you have.

For the width of the bars (remember this is a horizontal bar chart, so 
the heights of the bars will all be the same, but the widths will be 
different)
you will want to set it up so that the largest data value is set to the 
widest bar, and the rest are percentages of this width.
I hope that helps.
-Luke

___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Question about HORIZONTAL BAR CHART.....

2006-11-25 Thread Asrarahmed Kadri

As far as I understand, I need to design an algorithm which computes the
padding between each bar (space between each bar) and the length of each bar
( remember that this is a HORIZONTAL BAR CHART).

I am trying to understand your email. ( Please bear with my slow
comprehension )

Regards,
Asrarahmed Kadri


On 11/24/06, Luke Paireepinart <[EMAIL PROTECTED]> wrote:


Asrarahmed Kadri wrote:
>
>
> Hi Folks,
>
> I am constructing a bar-chart using Tkinter. The function takes a list
> 'data' and draws horizontal bar for each value.
> Now what I want is  the the canvas widget should be able to handle
> variable number of data-items. I cannot figure out how to do that,
> because I have hard coded the lengths of X and Y axes. I want to make
> the entire function a lot more flexible so that it determines the
> length of both the axes on the basis of data supplied to it.
#disclaimer
Note: I didn't realize you said horizontal bar charts.
This does vertical bar charts.
It should be trivial to change this.
Sorry for not reading your post more carefully to begin with.


#for width
>>> data = [1,5,6,7,8,3,2,9]
>>>target_width = 600
>>>padding = 10
>>>num_of_data_items = len(data)
>>>individual_width =(
target_width-(padding*(num_of_data_items-1)))/num_of_data_items
>>>individual_width
66
>>>individual_width*num_of_data_items
528
>>>padding* (len(data)-1)
70
>>>528 + 70
598

#for height
>>>target_height = 600
>>> maxval = max(yvals)
>>> for item in yvals:
   print int((float(item)/maxval) * target_height)

66
333
400
466
533
200
133
600

Did you honestly try to think this through before posting?
It's a very simple concept.
Not trying to be mean, just frank.
I think you could've done this on your own if you had tried.
Good luck with your bar charts. :)

When you ask a question such as this
"I cannot figure out how to do that, because I have hard coded the
lengths of X and Y axes. I want to make the entire function a lot more
flexible so that it determines the length of both the axes on the basis
of data supplied to it."
The way you should be reasoning is this:
I have hardcoded the lengths of the x and y axes.
I need to change this for my function to operate how I want it to.
How do I change it?
1) I have the data set already, so how do i figure out the width? (or
height, if you're doing horizontal bar graphs)
Well, I can make the following distinctions:
- I have a target width (the width of the canvas) that they must all fit
within.
- all bars will be the same width
- there should be some distance between each bar.
- this distance should be the same no matter how many data elements
there are, IE fixed.
- so if I have a fixed width between variable amounts of data, how would
I design an algorithm to perform this for me on any arbitrary data set?

2) How do I figure out the height of the data sets? (or width, if you're
doing horizontal bar graphs)
The following distinctions can be made:
- I have a target height that they all must fit within (the height of
the canvas)
- Only the maximum value should be the full height of the canvas.
- the others should be less than this height, depending NOT on their
ratio to the height of the maximum bar, but on their ratio to the data
that generated this.
-- what do we use for ratios? Fractions!

HTH,
-Luke





--
To HIM you shall return.
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor