文章目录
matplotlib绘图总结 基础概念图示 接口说明 基础操作 1 图像本身设置 1.1 图像的长宽比例设置 1.2 图像的清晰度 1 标题 1.1 修改标题 2,网格线设置 3,点设置 4 坐标轴设置 4.1 设置坐标轴的范围 4.2 隐藏坐标轴,只显示刻度 4.3 将网格放在图下边 图例设置 1,将图例放在图外 2,设置图例的位置 3,设置图例的列数 实例展示 一极坐标两条线 一个窗口多张图 更改横纵坐标轴刻度 常见问题汇总 1,无法正确显示中文 属性大全 颜色样式 线条风格 线条标记 参考文献matplotlib绘图总结
基础概念图示
在绘图结构中,figure创建窗口,subplot创建子图。所有的绘画只能在子图上进行。plt表示当前子图,若没有就创建一个子图。所有你会看到一些教程中使用plt进行设置,一些教程使用子图属性进行设置。他们往往存在对应功能函数。
接口说明
axex: 设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示 figure: 控制dpi、边界颜色、图形大小、和子区( subplot)设置 font: 字体集(font family)、字体大小和样式设置 grid: 设置网格颜色和线性 legend: 设置图例和其中的文本的显示 line: 设置线条(颜色、线型、宽度等)和标记 patch: 是填充2D空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置等。 savefig: 可以对保存的图形进行单独设置。例如,设置渲染的文件的背景为白色。 verbose: 设置matplotlib在执行期间信息输出,如silent、helpful、debug和debug-annoying。 xticks和yticks: 为x,y轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。 xlim、ylim: 设置横纵坐标轴范围 xlabel、ylabel: 设置坐标轴名称
基础操作
1 图像本身设置
1.1 图像的长宽比例设置调整大小,更符合画的图像的长宽比例
plt.rcParams['figure.figsize'] = (8.0, 4.0) # 设置figure_size尺寸1.2 图像的清晰度
plt.rcParams['savefig.dpi'] = 300 # 图片像素 plt.rcParams['figure.dpi'] = 300 # 分辨率
1 标题
1.1 修改标题主要是针对多图问题。如果只有一张图那么使用 plt.title("你的名字") 即可。多图问题需要使用 ax.set_titile("name")
import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(6, 6.5)) for i in range(4): ax = plt.subplot(221+i) alpha = 0.98 / 4 * i + 0.01 ax.set_title('%.3f' % alpha) t1 = np.arange(0.0, 1.0, 0.01) for n in [1, 2, 3, 4]: plt.plot(t1, t1 ** n, label="n=%d" % n) leg = plt.legend(loc='best', ncol=4, mode="expand", shadow=True) leg.get_frame().set_alpha(alpha) plt.savefig('1.png') plt.show()
2,网格线设置
连接
3,点设置
参考 marker就是描述的点的样式
plt.plot(x, y1, marker='o', mec='r', mfc='w')
4 坐标轴设置
4.1 设置坐标轴的范围括号里是起始数值和结束数值。
plt.xlim((-5, 5)) plt.ylim((-2, 2))4.2 隐藏坐标轴,只显示刻度
实现此功能,但是用到的不是坐标轴参数!而是去掉图的边框。效果图如下 设置前:
设置后:
4.3 将网格放在图下边
ax表示开始图中的区域
ax.set_axisbelow(True)
设置之前:
设置之后:
图例设置
图例所有属性连接
1,将图例放在图外主要是用到了 bbox_to_anchor 属性,相关参考
ax4.legend(loc=2, bbox_to_anchor=(0.5, -0.4))
bbox_to_anchor关键字为手动设置图例提供了很大帮助。主要参数设置为(x_loc, y_loc),其中,参数设置参考下图:也可设置负数
2,设置图例的位置
plt.legend(loc = 0)位置字符串描述 位置编码 ‘best’ 0 ‘upper right’ 1 ‘upper left’ 2 ‘lower left’ 3 ‘lower right’ 4 ‘right’ 5 ‘center left’ 6 ‘center right’ 7 ‘lower center’ 8 ‘upper center’ 9 ‘center’ 10 3,设置图例的列数
主要实现功能:实现图例的一行排开效果,主要用到了 nclo 属性,其数字就是列数,
ax.legend(loc=8, ncol=3)
实例展示
一极坐标两条线
#导入包 import matplotlib.pyplot as plt import numpy as np #创建数据 x = np.linspace(-5, 5, 100) y1 = np.sin(x) y2 = np.cos(x) #创建figure窗口 plt.figure(num=3, figsize=(8, 5)) #画曲线1 plt.plot(x, y1) #画曲线2 plt.plot(x, y2, color='blue', linewidth=5.0, linestyle='--') #设置坐标轴范围 plt.xlim((-5, 5)) plt.ylim((-2, 2)) #设置坐标轴名称 plt.xlabel('xxxxxxxxxxx') plt.ylabel('yyyyyyyyyyy') #设置坐标轴刻度 my_x_ticks = np.arange(-5, 5, 0.5) my_y_ticks = np.arange(-2, 2, 0.3) plt.xticks(my_x_ticks) plt.yticks(my_y_ticks) #显示出所有设置 plt.show()
结果:
一个窗口多张图
import numpy as np import matplotlib.pyplot as plt x = np.arange(-5, 5, 0.1) y = x * 3 # 一个窗口,多个图,多条数据 # 将窗口分成2行1列,在第1个作图,并设置背景色 sub1=plt.subplot(211, facecolor=(0.1843,0.3098,0.3098)) sub2=plt.subplot(212) # 将窗口分成2行1列,在第2个作图 sub1.plot(x,y) # 绘制子图 sub2.plot(x,y) # 绘制子图 # 添加一个子坐标系,rect=[左, 下, 宽, 高] axes1 = plt.axes([.2, .3, .1, .1], facecolor='y') plt.plot(x, y) # 绘制子坐标系 # 添加一个子坐标系,rect=[左, 下, 宽, 高] axes2 = plt.axes([0.7, .2, .1, .1], facecolor='y') plt.plot(x, y) plt.show()
结果:
更改横纵坐标轴刻度
显示x轴的刻标以及对应的标签 xticks(原始数据横坐标数组, 替代的数组 )
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(-5, 5, 100) y1 = np.sin(x) # 创建figure窗口 plt.figure(num=3, figsize=(8, 5)) # 画曲线1 plt.plot(x, y1) # 设置坐标轴范围 plt.xlim((-5, 5)) # 也可写成plt.xlim(-5, 5) plt.ylim((-2, 2)) # 也可写成plt.ylim(-2, 2) # 设置坐标轴名称 plt.xlabel("Data sets", fontsize=13, fontweight='bold') plt.ylabel("Accuracy", fontsize=13, fontweight='bold') # 设置坐标轴刻度 my_x_ticks = np.arange(-4, 4, 2) my_y_ticks = np.arange(-2, 2, 0.5) # 将原来的横坐标替换为 a b c d plt.xticks(my_x_ticks, ('a', 'b', 'c', 'd')) plt.yticks(my_y_ticks) # 显示出所有设置 plt.show()
结果:
常见问题汇总
1,无法正确显示中文
解决方案参考 有两种方案,一种是每次在代码中配置,另外一种是修改配置文件,为了方便,我一般适用第一种。即在代码前边加上
import matplotlib.pyplot as plt #coding:utf-8 plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 #有中文出现的情况,需要u'内容'
属性大全
颜色样式
别名 颜色 b 蓝色 g 绿色 r 红色 y 黄色 c 青色 k 黑色 m 洋红色 w 白色
如果这两种颜色不够用,还可以通过两种其他方式来定义颜色值:
1、使用 HTML十六进制字符串 color=’#123456’ 2、使用合法的HTML 颜色名字 (’red’,’chartreuse’等)。
线条风格
线条风格linestyle或ls 描述 ‘-‘ 实线 ‘:’ 虚线 ‘–’ 破折线 ‘None’,’ ‘,’’ 什么都不画 ‘-.’ 点划线
线条标记
标记maker 描述 ‘o’ 圆圈 ‘.’ 点 ‘D’ 菱形 ‘s’ 正方形 ‘h’ 六边形1 ‘*’ 星号 ‘H’ 六边形2 ‘d’ 小菱形 ‘_’ 水平线 ‘v’ 一角朝下的三角形 ‘8’ 八边形 ‘<’ 一角朝左的三角形 ‘p’ 五边形 ‘>’ 一角朝右的三角形 ‘,’ 像素 ‘^’ 一角朝上的三角形 ‘+’ 加号 ‘\ ‘ 竖线 ‘None’,’’,’ ‘ 无 ‘x’ X
参考文献
参考链接:数据架构师 参考链接:xtingjie 参考链接:煲饭酱 参考链接:开码牛
强烈推荐 如果忘记可以看这篇Python–matplotlib绘图
查看更多关于matplotlib绘制极坐标图 最全面总结的详细内容...