Matplotlib绘制折线图,并修改字体等小细节

Matplotlib绘制折线图:

最近制作了一个Matplotlib的折线图,主要的工作除了绘制折线等工作还有,修改坐标轴上面字体的功能。

废话不多说,见代码:

import matplotlib
from matplotlib import pyplot as plt
import numpy as np
import openpyxl
myfont = matplotlib.font_manager.FontProperties(fname=r"C:\Windows\Fonts\times.ttf")  #fname指定字体文件  选简体显示中文
# 打开excel文件,获取工作簿对象
wb = openpyxl.load_workbook('Book1.xlsx')
# 从表单中获取单元格的内容
ws = wb.active  # 当前活跃的表单
# print(ws.cell(row=1, column=2))  # 获取第一行第二列的单元格
# print(type(ws.cell(row=1, column=2).value))
x=[]
y=[]
for i in range(2, 104):  # 获取第一列的值
    # print(float(ws.cell(row=i, column=1).value))
    x.append(float(ws.cell(row=i, column=1).value))
# print(x)
for i in range(2, 104):  # 获取第二列的值
    # print(float(ws.cell(row=i, column=2).value))
    y.append(float(ws.cell(row=i, column=2).value))
# print(y)
# fig = plt.figure(figsize=(20, 8), dpi=80)
plt.figure()
plt.plot(x, y)
plt.xlim((0, 1))
plt.ylim((0, 10000))
# facecolor:箭头颜色;shrink:箭头的起始和结束位置两侧的空白大小;width:箭头宽度
plt.annotate( '(0,9594)',  # 显示字符串
    xy=(0, 9594),  # 箭头位置
    xytext=(0.0000001, 9595.0000001),  # 文本位置
    # arrowprops=dict(facecolor='red', shrink=0.1, width=2)
)
plt.annotate( '(0.53,4500)',  # 显示字符串
    xy=(0.53,4500),  # 箭头位置
    xytext=(0.5300001, 5000.0000001),  # 文本位置
    # arrowprops=dict(facecolor='red', shrink=0.1, width=2)
)
plt.plot(0.53, 4500, "-o") # 点
plt.annotate( '(1,0)',  # 显示字符串
    xy=(1, 0),  # 箭头位置
    xytext=(0.97, 500.0000001),  # 文本位置
)
my_x_ticks = np.arange(0 ,1.2, 0.2)
#对比范围和名称的区别
my_y_ticks = np.arange(0 , 12000, 2000)

plt.xticks(my_x_ticks,fontproperties = myfont)
plt.yticks(my_y_ticks,fontproperties = myfont)

plt.xlabel('${h}$',fontsize=14,fontproperties = 'Times New Roman')
plt.ylabel('${P}$',fontsize=14,fontproperties = 'Times New Roman')

# fontproperties = my_font
ax = plt.gca()
#设置上边和右边无边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
foo_fig = plt.gcf() # 'get current figure'
foo_fig.savefig(r'E:\000--STUDY\000--Code\PyCharm_text\Python-study2020.06\01_PythonEcharts\矢量图\line1.eps', format='eps', dpi=1000)
plt.show()

如图就是下面实现的最终结果,主要的需求是:坐标轴上下的英文名称,坐标轴的刻度名称,均使用新罗马文,,并在图线上面显示需要显示的点,以及点上对应的数值(我承认这个方法我有取巧的嫌疑!hhhh)

Matplotlib绘制折线图,并修改字体等小细节_第1张图片
最终实现折线图.png

如果想将下标修改如下图:


小的下标图

请修改下列代码:

plt.xlabel('${Y_0}$',fontsize=14,fontproperties = 'Times New Roman')

即可将下标修改成较小的形状。

你可能感兴趣的:(Matplotlib绘制折线图,并修改字体等小细节)