# 在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。
# 每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。
# title为图像标题,Axis为坐标轴, Label为坐标轴标注,Tick为刻度线,Tick Label为刻度注释
# 一个"Figure"意味着用户交互的整个窗口。在这个figure中容纳着"subplots"。
#
# 当我们调用plot时,matplotlib会调用gca()获取当前的axes绘图区域,而且gca反过来调用gcf()来获得当前的figure。
# 如果figure为空,它会自动调用figure()生成一个figure, 严格的讲,是生成subplots(111)。
# fig, ax = plt.subplots(2,2),其中参数分别代表子图的行数和列数,一共有 2x2 个图像。
# 函数返回一个figure图像和一个子图ax的array列表。
import matplotlib.pyplot as plt
input_value = [1, 2, 3, 4, 5]
squares = [1, 4, 9, 16, 25]
# .subplots() 可以在一张图中绘制一个或多个图表,变量fig代表整张图片,变量ax代表整张图中的各个图表
fig,ax = plt.subplots()
# 使用内置样式,里面包含已设置好的背景颜色,网格线,线条粗细,字体,字号等
plt.style.use('seaborn')
#linewidth 决定了绘制的线条的粗细
ax.plot(input_value,squares,linewidth=5)
# title 设置图标题,并给坐标轴加上标签,fontsize 字体大小
# xlabel、ylabel 设置x、y 轴标签
ax.set_title("Square Numbers",fontsize=24)
ax.set_xlabel("Value",fontsize=14)
ax.set_ylabel("Square of Value",fontsize=14)
# tick_params 设置刻度标尺的大小
ax.tick_params(axis='both' , labelsize=14)
plt.show()
'''
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None,
vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None,
*, data=None, **kwargs)
参数的解释:
x,y:表示的是大小为(n,)的数组,也就是我们即将绘制散点图的数据点
s:是一个实数或者是一个数组大小为(n,),这个是一个可选的参数。
c:表示的是颜色,也是一个可选项。默认是蓝色'b',表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列等等,
感觉还没用到过现在不解释了。但是c不可以是一个单独的RGB数字,也不可以是一个RGBA的序列。可以是他们的2维数组(只有一行)。
marker:表示的是标记的样式,默认的是'o'。
cmap:Colormap实体或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap
norm:Normalize实体来将数据亮度转化到0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认为colors.Normalize。
vmin,vmax:实数,当norm存在的时候忽略。用来进行亮度数据的归一化。
alpha:实数,0-1之间。
linewidths:也就是标记点的长度。
tick_params(axis='both', **kwargs)
axis : {‘x’, ‘y’, ‘both’} 分别代表设置X轴、Y轴以及同时设置,默认值为'both'。
reset : bool If True, set all parameters to defaults before processing other keyword arguments. Default is False.
which : {‘major’, ‘minor’, ‘both’} 分别代表设置主刻度线、副刻度线以及同时设置,默认值为'major'
direction : {‘in’, ‘out’, ‘inout’} 分别代表刻度线显示在绘图区内侧、外侧以及同时显示
length、width : 分别用于设置刻度线的长度和宽度
color、labelcolor、colors : 分别用于设置刻度线的颜色、刻度线标签的颜色以及同时设置刻度线及标签颜色
pad : 用于设置刻度线与标签间的距离
labelsize : 用于设置刻度线标签的字体大小
zorder : float Tick and label zorder.
bottom, top, left, right : bool or {‘on’, ‘off’} 的值为布尔值,分别代表设置绘图区四个边框线上的的刻度线是否显示
labelbottom, labeltop, labelleft, labelright : bool or {‘on’, ‘off’} 的值为布尔值,分别代表设置绘图区四个边框
线上的刻度线标签是否显示
'''
import matplotlib.pyplot as plt
# scatter() 可以在指定位置绘制一个点
x_values = list(range(1,1001))
y_values = [x**2 for x in x_values]
# 指定颜色的图
#plt.scatter(x_values, y_values, c='red', edgecolors='none',s=40)
# 使用 RGB 颜色模式自定义颜色,
# 传递参数 C 设置为一个元祖,其中包含三个 0~1 的小数值,分别表示红绿蓝,值越接近0,指定颜色越深,值越接近1,指颜色越浅
#plt.scatter(x_values, y_values, c=(0.5,0.5,0.5), edgecolors='none',s=40)
# 颜色映射,从起始颜色渐变到结束颜色
plt.scatter(x_values, y_values, c=y_values,cmap=plt.cm.Blues, edgecolors='none',s=40)
# title 设置图标题,并给坐标轴加上标签,fontsize 字体大小
# xlabel、ylabel 设置x、y 轴标签
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Value",fontsize=14)
# tick_params 设置刻度标尺的大小
plt.tick_params(axis='both', which='major', labelsize=14)
#设置每个坐标的范围
plt.axis([0,1100,0,1100000])
# 显示图表
#plt.show()
# 让程序自动将图表保存到文件中,第一个实参指定文件名,第二个实参指定将多余的空白区裁剪掉,如果不想裁剪可以省略第二个实参
plt.savefig('square.png',bbox_inches='tight')