好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

matplotlib绘制极坐标图 最全面总结

文章目录

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绘制极坐标图 最全面总结的详细内容...

  阅读:55次