import matplotlib.pyplot as plt
import numpy as np
# 一维数组, 元素为从-3到3之间均匀地产生50个点
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2
# num=3表示图片上方标题, figsize设置figure大小
plt.figure(num=3, figsize=(8, 5))
plt.plot(x, y1)
# 设置红色虚线宽度为1.0
plt.plot(x, y2, color='red', linewidth=1, linestyle='--')
# ## 设置坐标轴 ## #
# 设置x和y轴的范围
plt.xlim((-1, 2))
plt.ylim((-2, 3))
# 设置坐标轴含义, 中文需要加fontproperties属性
plt.xlabel('价格', fontproperties='SimHei')
plt.ylabel('利润', fontproperties='SimHei')
# 设置x轴和y轴的刻度
new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
"""
设置对应坐标用汉字或英文表示, 后面的fontproperties表示中文不乱码,
$$表示将英文括起来, r表示正则[配, 可以变为好看的字体
显示特殊字符, 比如阿尔法, 用转义符alpha, 前面的表示空格转义
"""
plt.yticks([-2, -1.8, -1, 1.22, 3.], ['非常糟糕', '糟糕', r'$good alpha$', r'$really good$', '超级好'],
fontproperties='SimHei')
# 设置边框/坐标轴
# gca = 'get current axis/获取当前轴线'
ax = plt.gca()
# 取消右边和上边轴, spines就是四个边框
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# matplotlib并没有设置默认的x轴和y轴, 设置默认轴
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置坐标原点
# 将(0, -1)设置为坐标原点
# x轴放置到y轴-1点处
ax.spines['bottom'].set_position(('data', -1))
# 将y轴放置到x轴0点处
ax.spines['left'].set_position(('data', 0))
# 使用set_position之后中文显示不出来
plt.yticks([-2, -1.8, -1, 1.22, 3.], ['非常糟糕', '糟糕', r'$good alpha$', r'$really good$', '超级好'],
fontproperties='SimHei')
plt.show()