Thanks for the workaround. Changing symbol to VBAR_BASELINE_CENTER and then setBaseline makes the semi-transparent images work now. I'll use this method for the short term.
It certainly would be simpler if I didn't have to create another curve since it does add to the number of rendered elements on the web page. Is it possible to change the symbol at individual points? Originally I wanted to dim the color of certain points but couldn't find a method to do that. Is there an example for me to look at? I also looked at annotation but unfortunately didn't seem to be able to satisfy my requirement at this time. The functionality does seem really useful though. Thanks. -- Paul Wang On Feb 20, 4:37 pm, John Gunther <[email protected]> wrote: > I played around with GChartExample21.java (available in the chart > gallery and linked to in my previous post) a bit, and was able to > produce a 1px overlap between adjacent bars that I think is consistent > with the problem you reported. > > I also found that I could eliminate this 1px adjacent bar overlap by > changing the following lines inGChart.java: > > VBarBottom(int wm, int hm) { > super(wm, hm,0.5,0.5,0.5,0.5); > } > > To instead read: > > VBarBottom(int wm, int hm) { > super(wm, hm,0.0,0.0,0.5,0.5); > } > > The 0.5s adds a half pixel widening to the left and right edges of the > symbol. This is intended to make symbol edges align better with the > gridlines, and is helpful in some other cases, too, but this half > pixel padding seems to be causing the 1px overlap, and that appears to > be preventing you from doing what you want to do. > > The easiest way to eliminate the 1px overlap that I found (without > changing theGChart.java source code) was to switch from > SymbolType.VBAR_SOUTH to SymbolType.VBAR_BASELINE_CENTER. This works > because the VBAR_BASELINE_CENTER symbol type's constructor does not > have the 1/2 pixel padding (it already has 0,0 instead of 0.5, 0.5). > > To make the VBAR_BASELINE_CENTER symbol type in other respects behave > the same as VBAR_SOUTH, you'll have to set the baseline of the curve > so that it equals the minimum value displayed on the Y axis, for > example, via something like: > > getCurve().getSymbol().setBaseline(theMinValueShownOnTheYAxis); > > Will try to correct the root cause (not sure I fully understand that > yet, BTW) in a future release (maybe via a feature that let's you > explicitly control if the 1/2 px padding is present? If you have > suggestions, I'm interested to hear them). Submit this problem to > theGChartissue tracker if you don't want to let me forget it. > > Thanks for taking the time to create a test and report the problem > that you found (I never considered this particular usage scenario of > translucent overlapping bars before your post). > > Getting back to your original problem, it might be simpler to create > 20 1-point curves and just change the background color or other > features of each symbol/point/curve to represent the enabled or > disabled state, rather than the two-curve strategy I suggested earlier > (this is almost certainly a simple/better approach if you only have 20 > bars on the chart, and you are not planning to use a chart key). > > Finally, the simplest way to indicate that "some of these bars are not > like the others" is via setAnnotationText or setAnnotationWidget, > especially if you are flexible about the way that such differences get > indicated (e.g indicating such differences via a label, a small icon > at the center of each bar, etc.) > > John > > On Feb 17, 2:37 pm, Paul Wang <[email protected]> wrote: > > > Thanks for the idea. I tried it out and it seems like it would work > > except that the bars seems be overlap a bit. > > > In the example below the bars have width of 53px but are positioned > > 52px apart. When they're solid bars it's not really noticeable but > > with semi-transparent images you notice it right away when they > > overlap a bit. > > > Following is the test code inside my EntryPoint: > > > public void onModuleLoad() { > > > GChart.setBlankImageURL(GWT.getModuleBaseURL() > > +GChart.DEFAULT_BLANK_IMAGE_URL); > > > GChartgchart= new GChartExample01(); > > gchart.update(); > > > RootPanel.get().add(gchart); > > > } > > > static class GChartExample01 extendsGChart{ > > > GChartExample01() { > > > setChartSize(990, 200); > > setHoverTouchingEnabled(false); > > > long numberOfPoints = 20; > > > addCurve(); > > > getCurve().getSymbol().setSymbolType > > (GChart.SymbolType.VBAR_SOUTH); > > getCurve().getSymbol().setBackgroundColor("green"); > > getCurve().getSymbol().setModelWidth(1.0); > > getCurve().getSymbol().setBorderWidth(0); > > > for (int i = 0; i < numberOfPoints; i++) { > > getCurve().addPoint(i, Random.nextInt(4000)); > > } > > > addCurve(); > > getCurve().getSymbol().setSymbolType > > (GChart.SymbolType.VBAR_SOUTH); > > getCurve().getSymbol().setBackgroundColor("blue"); > > getCurve().getSymbol().setModelWidth(1.0); > > getCurve().getSymbol().setBorderWidth(0); > > > for (int i = 0; i < numberOfPoints; i++) { > > getCurve().addPoint(i, Random.nextInt(4000)); > > } > > > getXAxis().setHasGridlines(false); > > > } > > } > > > On Feb 12, 3:18 am, John Gunther <[email protected]> wrote: > > > > I noticed this is your very first post to any Google forum. Welcome. > > > > GChart2.4 has a built-in single point selection capability. Here's an > > > example of how to use that: > > > >http://gchart.googlecode.com/svn/trunk/doc/com/googlecode/gchart/clie... > > > > To emulate multiple selection, you could add a second curve that had > > > the same symbol type (and other properties such as width) as the first > > > (so that it would overlay it) but only included the points (bars) you > > > wanted to be selected. The setImageURL method could then be applied to > > > this second curve, passing in your semi-transparent image. > > > > Selection/deselection would then be a matter of adding/removing points > > > to/from this second curve, and calling the update method to refresh > > > the chart. > > > > John C. Guntherhttp://gchart.googlecode.com > > > > On Feb 11, 1:38 pm, Paul Wang <[email protected]> wrote: > > > > > Hi, > > > > > I'd like to put a semi-transparent panel on top of agchartto show > > > > disabled areas of a bar graph. I looked throughgchart2.4 and didn't > > > > see anything that'd let me easily find out where bars are located so I > > > > can position a panel on top of it. > > > > > Is there a better way to do this? I also need to do this without any > > > > user input (no events). > > > > > -- > > > > Paul Wang --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
