#pic_center =400x
系列文章:
【1】 要不要plt.show()
ipython中可用魔术方法 %matplotlib inline
pycharm 中必须使用plt.show()
【2】设置样式
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.ylabel("squares")
plt.show()
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.ylabel("squares")
print(plt.style.available[:])
# ['Solarize_Light2', '_classic_test_patch',
# '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh']
with plt.style.context("_classic_test_patch"): #seaborn-white是其中一种
plt.plot(x, y)
plt.show()
【3】将图像保存为文件
plt.savefig(‘./static/images/test.jpg’, dpi=750, bbox_inches = ‘tight’)
也可使用绝对路径,file_path = r’e:\s\t\test.jpg’
调整dpi值,越高越清晰。
bbox_inches参数可以使全图完整输出
x = np.linspace(0,10,100)
y = np.exp(x)
print(plt.style.available[:])
# ['Solarize_Light2', '_classic_test_patch',
# '_mpl-gallery', '_mpl-gallery-nogrid', 'bmh']
with plt.style.context("_classic_test_patch"): #seaborn-white是其中一种
plt.plot(x, y)
plt.savefig("E:\\deeplean\\MachineLearning\\lihongyi\\2020\my_figure.png",dpi=50)
plt.show()
plt.style.use("seaborn-whitegrid")
x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x))
plt.show()
plt.style.use("seaborn-whitegrid")
x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))
plt.show()
x = np.linspace(0, 2*np.pi, 100)
plt.style.use("seaborn-whitegrid")
offsets = np.linspace(0, np.pi, 5)
colors = ["blue", "g", "r", "yellow", "pink"]
for offset, col in zip(offsets, colors):
plt.plot(x, np.sin(x-offset), color=col) # color可缩写为c
plt.show()
x = np.linspace(0, 10, 11)
offsets = list(range(8))
linestyles = ["solid", "dashed", "dashdot", "dotted", "-", "--", "-.", ":"]
for offset , linestyle in zip(offsets, linestyles):
plt.plot(x, x+offset, linestyle=linestyle) # linestyle可简写为ls
plt.show()
x = np.linspace(0, 10, 11)
offsets = list(range(0, 12, 3))
linewidths = (i*2 for i in range(1, 5))
for offset , linewidth in zip(offsets, linewidths):
plt.plot(x, x+offset,linewidth=linewidth)
plt.show()
x = np.linspace(0, 10, 11)
offsets = list(range(0, 12, 3))
markers = ["*", "+", "o", "s"]
for offset , marker in zip(offsets, markers):
plt.plot(x, x+offset,marker=marker)
plt.show()
x = np.linspace(0, 10, 11)
offsets = list(range(0, 12, 3))
markers = ["*", "+", "o", "s"]
for offset , marker in zip(offsets, markers):
plt.plot(x, x+offset,marker=marker,markersize=10) # markersize可简写为ms
plt.show()
x = np.linspace(0, 10, 11)
offsets = list(range(0, 12, 3))
color_linestyles = ["g-", "b--", "k-.", "r:"]
for offset , color_linestyle in zip(offsets, color_linestyles):
plt.plot(x, x+offset,color_linestyle)
plt.show()
x = np.linspace(0, 10, 11)
offsets = list(range(0, 8, 2))
color_marker_linestyles = ["g*-", "b+--", "ko-.", "rs:"]
for offset, color_marker_linestyle in zip(offsets, color_marker_linestyles):
plt.plot(x, x+offset, color_marker_linestyle)
plt.show()
其他用法及颜色缩写、数据点标记缩写等请查看官方文档,如下:
官方文档
x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x))
plt.xlim(-1, 7)
plt.ylim(-1.5, 1.5)
plt.show()
x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x))
# plt.axis([-2, 8, -2, 2])
# plt.axis("tight")
plt.axis("equal")
plt.show()
plt.axis([a, b, c, d]) 设置x轴的范围为[a, b],y轴的范围为[c, d]
plt.axis(‘equal’) x,y轴刻度等长
plt.axis()用法详解
x = np.logspace(0, 5, 100)
plt.plot(x, np.log(x))
plt.xscale("log")
plt.show()
x = np.linspace(0, 10, 100)
plt.plot(x, x**2)
plt.xticks(np.arange(0, 12, step=1))
plt.show()
x = np.linspace(0, 10, 100)
plt.plot(x, x**2)
plt.xticks(np.arange(0, 12, step=1), fontsize=15)
plt.yticks(np.arange(0, 110, step=10))
x = np.linspace(0, 10, 100)
plt.plot(x, x**2)
plt.tick_params(axis="both", labelsize=15)
plt.show()
参数axis的值为’x’、’y’、’both’,分别代表设置X轴、Y轴以及同时设置,默认值为’both’。
labelsize用于设置刻度线标签的字体大小
x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x))
plt.title("A Sine Curve", fontsize=20)
plt.xlabel("x", fontsize=15)
plt.ylabel("sin(x)", fontsize=15)
plt.show()
x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x), "b-", label="Sin")
plt.plot(x, np.cos(x), "r--", label="Cos")
plt.ylim(-1.5, 2)
# plt.legend() #默认位置
plt.legend(loc="upper center", frameon=True, fontsize=15) #居中
plt.legend(loc = "best", ncol=2)#图例 分两列显示图例,best根据空白位置,自动挑选合适的空白位置
plt.show()
x = np.linspace(0, 2*np.pi, 100)
plt.plot(x, np.sin(x), "b-")
# 在(3.5,0.5)处添加文字
plt.text(3.5, 0.5, "y=sin(x)", fontsize=15)
#
plt.annotate('local min', xy=(1.5*np.pi, -1), xytext=(4.5, 0),
arrowprops=dict(facecolor='black', shrink=0.1),)
plt.show()
x = np.linspace(0, 2*np.pi, 20)
plt.scatter(x, np.sin(x), marker="o", s=30, c="r") # s 大小 c 颜色
x = np.linspace(0, 10, 100)
y = x**2
plt.scatter(x, y, c=y, cmap="inferno")
plt.colorbar()
plt.show()
颜色配置参考官方文档
x, y, colors, size = (np.random.rand(100) for i in range(4))
plt.scatter(x, y, c=colors, s=1000*size, cmap="viridis")
plt.show()
x, y, colors, size = (np.random.rand(100) for i in range(4))
plt.scatter(x, y, c=colors, s=1000*size, cmap="viridis", alpha=0.3)
plt.colorbar()
plt.show()
x = np.arange(1, 6)
plt.bar(x, 2*x, align="center", width=0.5, alpha=0.5, color='yellow', edgecolor='red')
plt.tick_params(axis="both", labelsize=13)
plt.xticks(x, ('G1', 'G2', 'G3', 'G4', 'G5'))
plt.show()
x = ('G1', 'G2', 'G3', 'G4', 'G5')
y = 2 * np.arange(1, 6)
plt.bar(x, y, align="center", width=0.5, alpha=0.5, color='yellow', edgecolor='red')
plt.tick_params(axis="both", labelsize=13)
plt.show()
x = ["G"+str(i) for i in range(5)]
y = 1/(1+np.exp(-np.arange(5)))
colors = ['red', 'yellow', 'blue', 'green', 'gray']
plt.bar(x, y, align="center", width=0.5, alpha=0.5, color=colors)
plt.tick_params(axis="both", labelsize=13)
plt.show()
x = np.arange(5)
y1 = np.random.randint(20, 30, size=5)
y2 = np.random.randint(20, 30, size=5)
plt.bar(x, y1, width=0.5, label="man")
plt.bar(x, y2, width=0.5, bottom=y1, label="women")
plt.legend()
plt.show()
x = np.arange(15)
y1 = x+1
y2 = y1+np.random.random(15)
plt.bar(x, y1, width=0.3, label="man")
plt.bar(x+0.3, y2, width=0.3, label="women")
plt.legend()
plt.show()
x = ['G1', 'G2', 'G3', 'G4', 'G5']
y = 2 * np.arange(1, 6)
plt.barh(x, y, align="center", height=0.5, alpha=0.8, color="blue", edgecolor="red")
plt.tick_params(axis="both", labelsize=13)
plt.show()