How to make a 9x9 RGB LED Matrix

Here's the start of a 9x9 RGB LED array.
You need 27 Anode drivers, and 9 cathode drivers.
It gives you the start of how things get hooked up.
To drive it, you will drive all the anodes for column1, then drive a cathode low for a bit, then high.
Drive the anodes for the next column, drive that cathode low, then back high.

The data to be read out can be stored in an array, transferred to the array similar to this:

#include <SPI.h>

/* 9 high x 10 across array */  << adjust for 27 high by 9 across: more shift registers, 27 bits in a 32-bit long word (data type unsigned long)
/* turn on 1 LED */
#include <SPI.h>
byte latchPin = 10;
byte clockPin = 13;
byte dataPin = 11;
byte clock = 9;
byte Reset = 8;
byte x;
int rowByte;
byte upperrowByte;
byte lowerrowByte;
int columnByte;
// define the LEDs to be turned on. Assuming 1 = on, flip over of 1 = off
// need 10 defined as will be calling out displayArray[0] thru displayArray[9] in the loop
int displayArray [] = {
B00000001, 
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000};

void setup(){
  Serial.begin(9600);
  pinMode(dataPin,OUTPUT);
  pinMode(clockPin,OUTPUT);
  pinMode(latchPin,OUTPUT);
  pinMode(clock,OUTPUT);
  pinMode(Reset,OUTPUT);
  digitalWrite(Reset,HIGH);
  digitalWrite(Reset,LOW);
  SPI.begin();
}

  void loop() {

for (x = 0; x<10; x=x+1){
digitalWrite (latchPin, LOW);
SPI.transfer (highByte (displayArray[x]) );
SPI.transfer (lowByte (displayArray[x]) );
digitalWrite (latchPin, HIGH);
delay (25);
digitalWrite (clock, HIGH);
digitalWrite (clock, LOW);
}
  digitalWrite(Reset,HIGH);
  digitalWrite(Reset,LOW);
}// end void loop