Please use it. I hope it works out for you. But please note that these Charlieplexed or N(N-1) multiplexed designs do not light the LEDs to full brightness when you have more than a couple columns and you may not see the display at all if it's in direct sunlight.
If you require full brightness and/or PWM brightness control in your product (from super bright to black) then you may want to consider another high performance reduced I/O design I developed that utilizes standard multiplexing and an 8 bit serial-to-parallel sinking driver IC. While the design was originally intended for driving large numbers of 7-segment or 8x8 matrix displays using a 9 or 10 pin interface, it scales down well when you have lower I/O pin requirements.
In this scheme 1 driver IC and 3 PIC pins will drive 16 LEDs, 4 pins will drive 24 LEDs, 5 pins will drive 32 LEDs, and so on. The pins are multiplexed via the PIC PWM signal to form both a column driver bus during the display "on" time (PWM off time) and a data bus to load the serial-to-parallel sinking driver IC shift register during the display "off" time (PWM on time).
The drawing below shows 7-segment displays but I'm sure you realize those can be replaced by the discrete LEDs in standard Bar/Graph displays. The drawing also shows two seperate displays, each with its own driver IC, but, again, I'm sure you realize you only need a single display and driver IC for your 20 LED Bar/Graph.
Have fun. Regards, Mike