Could be 1 of 3 things:
Bad LCD panel
Bad LCD cable
Bad graphics card
If it shows normal on an external display then it is not the graphics card so try that first.
You can disassemble to the point where you can see the LCD cable and while the laptop is on, you can poke the cable with a non-metallic object (like a plastic pen) and see if it has any effect on the screen. If it does it might just be the cable. If not, then it is most likely the LCD panel itself.
Replacement cable on eBay is less than $20, a screen will run you $50 to $60.