数据可视化Matplotlib使用2-优化图像

设置标题

  • xlabel("标题") : X 轴标题
  • ylabel("标题") : Y 轴标题
  • title("标题") : 图像的标题
from matplotlib import pyplot as plt


x = range(1,8) 
y = [17, 17, 18, 15, 11, 11, 13]
plt.plot(x, y, color='green',alpha=0.5,linestyle='-',linewidth=3,marker='o') 
plt.xlabel('X-label')  # X轴标题
plt.ylabel("Y-label")  # Y轴标题
plt.title('Title') # 图像的标题
plt.show()

数据可视化Matplotlib使用2-优化图像_第1张图片

  • 在设置标题的时候, 默认情况下是不支持中文的, 需要简单配置一下字体即可

中文显示

  • matplotlib是支持unicode编码的,中文乱码的主要问题是没有找到合适的中文字体

  • 第一步: 创建了一个字体对象, 使用font_manager.FontProperties创建

  • 第二步: 在需要添加中文的地方添加了fontproperties属性,

from matplotlib import font_manager

# 创建字体对象
my_font = font_manager.FontProperties(fname="D:/study/gameProjects/snake/SimHei.TTF", size=18)
x = range(1,8) 
y = [17, 17, 18, 15, 11, 11, 13]
plt.plot(x, y, color='green',alpha=0.5,linestyle='-',linewidth=3,marker='o') 
plt.xlabel('X轴标题', fontproperties=my_font)
plt.ylabel("Y轴标题", fontproperties=my_font)
plt.title('图像标题', fontproperties=my_font)
plt.show()

数据可视化Matplotlib使用2-优化图像_第2张图片

改变图片的大小

  • plt.figure(figsize=(a, b), dpi=dpi)
  • figsize 设置图形的大小(比例),
    • a 为图像的宽
    • b 为图像的高
  • dpi 为 设置图形每英寸的点数(像素点)
%matplotlib inline
from matplotlib import pyplot as plt
from matplotlib import font_manager
from random import randint

x = range(20) 
y = [randint(1,50) for i in range(20)]

plt.figure(figsize=(20, 10),dpi=100)


plt.plot(x, y, color='green',alpha=0.5,linestyle='-',linewidth=3,marker='o') 
plt.xlabel('X-label')  # X轴标题
plt.ylabel("Y-label")  # Y轴标题
plt.title('Title') # 图像的标题
plt.show()

数据可视化Matplotlib使用2-优化图像_第3张图片

  • 这样就产生啦一个 2000 * 1000 的图像, 是不是看上去宽了一点

自定义X轴

plt.xticks(locs, [labels], **kwargs) 
  • locs参数为数组参数,表示X轴的刻度线显示标注的地方就是ticks放置的地方
  • 第二个参数也是数组参数, 表示在locs数组表示的位置添加的标签
%matplotlib inline
from matplotlib import pyplot as plt
from matplotlib import font_manager
from random import randint

x = range(1, 20) 
y = [randint(1,50) for i in range(1, 20)]

plt.figure(figsize=(20, 10),dpi=80)


plt.plot(x, y, color='green',alpha=0.5,linestyle='-',linewidth=3,marker='o') 
plt.xlabel('X-label')  # X轴标题
plt.ylabel("Y-label")  # Y轴标题
plt.title('Title') # 图像的标题

# x 轴刻度的标签列表 ['1-biaoqian', 2-biaoqian, ... , '19-标签']
labels = [str(i) +"-biaoqian" for i in range(1, 20)]

# 自定义x轴刻度显示
plt.xticks(x,labels,rotation=45)

plt.show()

数据可视化Matplotlib使用2-优化图像_第4张图片
数据可视化Matplotlib使用2-优化图像_第5张图片

  • rotation=45 : 刻度标签文字的旋转角度

一图多线与图例

  • 一个坐标系中绘制两条折线,只需要使用两次plt.plot()方法就可以了
%matplotlib inline
from matplotlib import pyplot as plt
from matplotlib import font_manager
from random import randint

x = range(1, 20) 
y_g = [randint(1,50) for i in range(1, 20)]
y_r = [randint(1,50) for i in range(1, 20)]

plt.figure(figsize=(20, 10),dpi=80)


plt.plot(x, y_g, color='green', label="green") 
plt.plot(x, y_r, color='red', label="red") 
plt.xlabel('X-label')  # X轴标题
plt.ylabel("Y-label")  # Y轴标题
plt.title('Title') # 图像的标题

# x 轴刻度的标签列表 ['1-biaoqian', 2-biaoqian, ... , '19-标签']
labels = [str(i) +"-biaoqian" for i in range(1, 20)]

# 添加图例
# plt.legend(prop=my_font) # 中文图例时使用prop传入字体
plt.legend()

# 这行代码就是添加网格的效果,这里面的 alpha=0.4是设置网格线的透明度,范围是(0~1)
plt.grid(alpha=0.4)

# 自定义x轴刻度显示
plt.xticks(x,labels,rotation=45)

plt.show()
  • plt.legend(prop=my_font)是添加图例的方法
    • prop=my_font 参数是设置图例上中文显示的属性
    • 图例上显示的文字我们需要添加在plt.plot(x,y,label='图例说明文字')方法的label属性中
    • 数据可视化Matplotlib使用2-优化图像_第6张图片

一图多个坐标系子图

  • 一个画布上是可以分成多个区域,每个区域都可以绘制一个图像,这里的每个图像称为一个子图
  • 调用plt.subplot()函数就可以在画布上创建一个子图
  • plt.subplot(nrows, ncols, index)
    • nrows 参数指定将数据图区域分成多少行
    • ncols 参数指定将数据图区域分成多少列
    • index 参数指定获取第几个区域(区域的index是从左倒右从上到下)
%matplotlib inline
from matplotlib import pyplot as plt
from random import randint

x = range(1, 20) 
y1 = [randint(1,50) for i in range(1, 20)]
y2 = [randint(1,50) for i in range(1, 20)]
y3 = [randint(1,50) for i in range(1, 20)]
plt.figure(figsize = (10,8))
# 第一个子图
# 折线图
plt.subplot(2, 2, 1)
plt.plot(x, y1)
plt.title('Axes1')
#第二个子图
# 折线图,y轴每个数据的立方
plt.subplot(2, 2, 2)
plt.plot(x, y2)
plt.title('Axes2')
#第三个子图
# 折线图,x轴和y轴均指定数据
plt.subplot(2, 2, 3)
plt.plot(x,y3)
plt.title('Axes3')
plt.show()

数据可视化Matplotlib使用2-优化图像_第7张图片

  • 上面创建一个包含2行2列,共4个子图
  • 第一个子图的创建方法是plt.subplot(2, 2, 1)
  • 第二个子图就使用:plt.subplot(2, 2, 2),以此类推

你可能感兴趣的:(Pandas,python,数据可视化)