Although I can full appreciate the solution that you have offered, it would not produce the effect that we desire. It may have been that I have not explained my self.
What we are after is the following:
Assuming that the minimum height of each label would be 20px to ensure that neither the label or the bar overlapped. If the chart area was 100px height then we could assume that we could safely display 5 labels.
With your solutions, if the chart was resized to 300px, we would still see the same 5 labels but they would occupy 60px each.
The solution that we are looking for would mean that the zoom (or range start/end) would automatically adjust to show 15 labels (as we could safely display 15 labels in a chart area of that size).
The only time that the labels would occupy a space greater than 20px would be if the number of items multiplied by the minimum height (20px in this case) was less than the available chart area height. (e.g. if the chart height was 300px but we only had an item count of 10, the height of each label would be 30px.)
Hope that makes a little more sense.
PSP IT Design & Development