If by "thermal radiation" you mean "black body radiation emitted by a warm body", then the equation that describes what you are asking about is the Planck Law, which gives the radiance as a function of wavelength $\lambda$ for a black body radiator at a particular temperature $T$:
$$B(\lambda, T) = \frac{2hc^2}{\lambda^5}\frac{1}{e^{\frac{hc}{\lambda k_B T}}-1}$$
Radiance has units of $\rm{W~sr^{-1} m^{-2} m^{-1}}$ - energy per unit angle, per unit area, per meter (because it's a function of wavelength). The shape of this distribution shifts towards the UV as temperature increases: the location of the peak is given by Wien's Displacement Law:
$$\lambda_{max}=\frac{b}{T}$$
Where $b$ is Wien's displacement constant, equal to 2.8977729(17)×10$^{−3}$ m K. This shows that the peak will shift to shorter wavelengths as the temperature increases.*
I made a little Python program that plots Planck's Law for a number of different temperatures; by using a log scale, you can see that there is "some" energy at all wavelengths, but the curves drop off steeply:
If you repeat this plot with linear Y axis, it looks like this:
As you can see, at sufficiently high temperatures (hotter than the surface of the sun) the peak of the radiation will be in the UV (that is, below 400 nm).
Finally here is a linear plot of the curves (scaled to their respective maximum value) for some more extreme temperatures - 2041 K (melting platinum), 5777 K (sun), 10,000 K (a very hot sun), 210,000 K and 1,000,000 K (values suggested by Keith McLary)
As before - the shapes of the curves is unchanged, but the peak moves left (and the total power goes up as $T^4$.)
You can create curves like this yourself with a program like this (slightly updated code in light of Gert's suggestion):
from scipy.constants import codata
import numpy as np
import matplotlib.pyplot as plt
D = codata.physical_constants
h = D['Planck constant'][0]
k = D['Boltzmann constant'][0]
c = D['speed of light in vacuum'][0]
def planck(T, l):
# calculate the Planck Law for a specific temperature and an array of wavelengths
p = c*h/(k*l*T)
result = np.zeros(np.shape(l))+1e-99
# prevent over/underflow - compute only when p is "not too big"
calcMe = np.where(p<700)
result[calcMe] = (h*c*c)/(np.power(l[calcMe], 5.0) * (np.exp(p[calcMe])-1))
return result
# define a range of temperatures
Tbody=np.arange(2000, 12000, 2000)
# compute over a range of wavelengths - from deep UV to mm
Lvec = np.logspace(1, 6, 500)*1e-9 # wavelengths: 1 nm - 1 mm
plot1 = plt.figure()
ax = plot1.add_subplot(111)
# compute Planck function for each temperature and plot:
for ti,T in enumerate(Tbody):
r = planck(T, Lvec)
ax.plot(Lvec*1e9, planck(T, Lvec),label='T=%d'%T)
# create axes and labels
plotAs = 'linear' # set to 'log' for log plot
ax.set_xlabel('lambda (nm)')
ax.set_ylabel('radiance (W/sr/m^3)')
ax.set_title('Black body spectrum')
ax.legend()
ylim = (1e-8, 2.5e14) # for clarity of log plot limit lower value
# arrow drawn at different height depending on whether this is log or linear plot
arrowHeight = 1e-4
if plotAs == 'linear':
arrowHeight = 5e13
ax.set_ylim(ylim)
ax.plot([400, 400], ylim, color='black')
# arrow pointing away from the line
ax.annotate('', xy=(1400, arrowHeight), xytext=(400, arrowHeight), arrowprops = dict(facecolor='black', shrink = 0.05))
# text belongs to an invisible arrow...
ax.annotate('visible and IR', xy=(1400, arrowHeight), xytext=(1400, arrowHeight), arrowprops = dict(facecolor='white', edgecolor='white'))
ax.set_xscale('log')
ax.set_yscale(plotAs) # linear or logarithmic
plot1.show()
* It's obvious to see why this is so: the only place in the equation where $T$ appears, it appears as $\lambda T$ so if you increase T the entire shape of the curve will shift; and the peak will be at the same value of $\lambda T$. It follows that $\lambda \propto \frac{1}{T}$