中文乱码问题
from matplotlib.font_manager import FontProperties
myfont = FontProperties(fname='/System/Library/Fonts/PingFang.ttc', size=14)
# plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.plot(x, y_precision_product, '*-', label=u"准确率(%)")
plt.plot(x, y_precision_susp, 'm--', label=u"(%)")
plt.ylabel(u"准确率(%)", fontproperties=myfont, fontsize=18)
plt.xlabel(u"阈值", fontproperties=myfont, fontsize=18)
plt.title(u"性能与阈值关系", fontproperties=myfont, fontsize=28, color='blue')
plt.legend(prop=myfont)
绘图教程链接:
python绘制三维图
二维图实例
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
COS = np.cos(X)
EXP = 1 - np.exp(X - 1)
COM = 1 - np.exp(COS - 1)
fig = plt.figure(figsize=(20, 7))
plt.subplot(131)
plt.plot(X, COS, label='cos(x)', linewidth='3')
plt.fill_between(X, COS, where=(0 < X) & (X < np.pi), facecolor='#acc2d9')
# plt.xlim(-np.pi, np.pi)
# plt.xlabel(u"x")
# plt.ylabel(u"y")
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.grid(True, which='major')
plt.legend(fontsize=14)
plt.subplot(132)
plt.plot(X, EXP, label='1 - np.exp(x - 1)', linewidth='3')
# plt.xlim(-np.pi, np.pi)
# plt.ylim(-8, 2)
# plt.xlabel(u"x")
# plt.ylabel(u"y")
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.grid(True, which='major')
plt.legend(fontsize=14)
plt.subplot(133)
plt.plot(X, COM, label='1 - np.exp(cos(x) - 1)', linewidth='3')
plt.fill_between(X, COM, where=(0 < X) & (X < np.pi), facecolor='#acc2d9')
# plt.xlim(-np.pi, np.pi)
# plt.xlabel(u"x")
# plt.ylabel(u"y")
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
plt.grid(True, which='major')
plt.legend(fontsize=14)
plt.show()
颜色表:
三维画图实例
in_file = "trace_data.xls"
radar_pos_arr = [[80, 0, 0], [30, 60, 0], [55, 110, 0], [105, 110, 0], [130, 60, 0]]
trace_pos_arr = _read_excel_file(in_file)
# fig = plt.figure(figsize=(18, 7))
# ax = fig.add_subplot(131, projection='3d')
fig = plt.figure(figsize=(10, 7))
# plt.title('Minimize Number of UAV Solution')
ax = fig.add_subplot(111, projection='3d')
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
Z = np.sin(R)
x = [k[0] / 1000 for k in trace_pos_arr]
y = [k[1] / 1000 for k in trace_pos_arr]
z = [k[2] / 1000 for k in trace_pos_arr]
ax.set_xlabel('X (km)')
ax.set_ylabel('Y (km)')
ax.set_zlabel('Z (km)')
# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
ax.plot(x, y, z, c='g', label='UAV Trajectory')
x = [k[0] for k in radar_pos_arr]
y = [k[1] for k in radar_pos_arr]
z = [k[2] for k in radar_pos_arr]
# # 遍历每一个点,使用text将y值显示
# for i, j in zip(x, y):
# ax.annotate("%d" % (i), xy=(i, j))
for i, j, k in zip(x, y, z):
label = '(%d, %d, %d)' % (i, j, k)
ax.text(i, j, k, label)
ax.scatter(x, y, z, c='r', label='Radars Position')
ax.legend()
plt.show()
例子
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.show()
设置折线点的属性
import numpy as np
import matplotlib.pyplot as plt
# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)
# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^-')
plt.show()
解决中文编码问题
import matplotlib.font_manager as fm
myfont = fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc')
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y, 'rs-')
plt.xlabel('横坐标轴', fontproperties=myfont, fontsize=30, color='black')
plt.ylabel('纵坐标轴', fontproperties=myfont, fontsize=30, color='black')
plt.title("解决中文编码问题",fontproperties=myfont, fontsize=28, color='black')
plt.show()
在点上面打标签
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y, 'rs-')
for xy in zip(x, y):
plt.annotate("(%s, %s)" % xy, xy=xy, xytext=(-40, 8), textcoords='offset points')
plt.show()
多条折线添加标注
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 8, 27, 64]
plt.plot(x, y1, 'rs-', label='two')
plt.plot(x, y2, 'bs-', label='three')
plt.legend(loc='lower right')
plt.show()