7 Segment display driver
It looks good for the most part. It's certainly functional.



There's some things I'd change though, mainly on the pedantic side.


The 330 Ω between the Arduino &amp; the base could be 2.2 kΩ instead, or even 10 kΩ
The 330 Ω between the collector and the base could be 2.2 kΩ instead. 


This is what I'd do personally because I value efficient/smaller designs:


All BJT's could be MOSFETs instead, meaning you'll be able to get rid of 8 base-resistors
Remove all transistors and just use the 74LS595 directly, it can sink 24 mA per pin, which is more than enough an LED needs.  





  The intention is to multiplex four displays using this circuit, selecting the digits using the Arduino and switching the segments via the shift register. It's also about learning transistors and how to use them as switches.


With this information, I'd do the following:


Use 4 PMOS so you can select display
Connect all cathodes of the 4 displays in parallel, so g of display 1 goes to g of display 2 and etc. 
Connect the 7 pins to the 74LS595 with 220 Ω resistors, one per pin. 


Or, I'd just get rid of the 4 PMOS and connect the anodes through a 220 Ω resistor to the Arduino and remove the 7 resistors at the cathodes. This however leads to the fact that you will have to cycle through each LED in each 7-segment display. And... maybe I'd just... also remove the 74LS595 and connect it to 7 pins of the Arduino.



To make it crystal clear, this is what I would do: I'll only show the first 2 LED's. I won't make 4x7=28 LED's. 







simulate this circuit &ndash; Schematic created using CircuitLab

You select with \$A_0, A_1, A_2, A_3\$ and activate one LED at a time with \$C_0,C_1,C_2,C_3,C_4,C_5,C_6\$.