坐标轴的定制

坐标轴概述

在绘制图表的过程中,matplotlib会根据所绘图表的类型决定是否使用坐标系,变哪种类型的坐标系。例如,饼图无坐标系,雷达图需使用极坐标系,折线图需使用直角坐标系等。其中,直角坐标系经常被使用。matplotlib 中的直角坐标系由两条水平坐标轴青坐标辅以及围成的绘图区域构成,以限制图形显示的区域,其左侧和下方的坐标轴(叫作y轴和x轴)经常被使用,其他坐标轴很少被使用。
坐标轴的结构相同,主要包括轴脊、刻度,其中刻度又可以细分为刻度线和刻度。刻度线又可以细分为主刻度线和次刻度线。坐标轴的各部分均是 matplotlib 类的对象轴是axis.Axis 类的对象;轴是 spines.Spine 类的对象;刻度是 axis.Ticker 类的对象。常用的x轴是一个axis.Xaxis 类的对象,轴是一个 axis.Yaxis 类的对象。如前所述的所有的对象均包含于Axes类对象中,可通过 Axes 类的一些属性分别获取,关于这些属性的介绍如下。
·xaxis :获取X轴。
·yaxis:获取Y轴。
·spines :获取包含全部轴脊的字典。
访问 spines 属性后会返回一个 OrderedDict 类的对象。OrderedDict 类是 dict 的子类,t可以维护添加到字典中的键值对的顺序。例如,获取某坐标轴的全部轴脊,代码如下.
print(ax.spines)

向任意位置添加坐标轴

matplotlib 支持向画布的任意位置添加自定义大小的坐标系统,同时显示坐标轴,而不再受规划区域的限制。pyplot模块可以使用axes0函数创建一个Axes类的对象,将Axe类的对象添加到当前画布中。axes()函数的语法格式如下:
 
axes(arg=None,projection=None, polar=False, aspect,frame_on,"kwargs)

 定制刻度的样式

在matplotlib中,坐标轴的刻度有着固定的样式,例如,刻度线的方向是朝外的,刻度的颜色是黑色等。pyplot 中可以使用 tiok params0 丽数定制刻度的式。tick_params的语法格式如下 :
 
tick_params(axis-'both',**kwargs)

该函数的常用参数的含义如下。
·axis :表示选择操作的轴,可以取值为'x','y'或 both',默认为 both'。
·reset : 若设为 True,表示在处理其他参数之前均使用参数的默认值。
·which:表示刻度的类型,可以取值为'major'、'minor' 或both',默认为'major。
·direction :表示刻度线的方向,可以取值为'in'、'out' 或'inout'。
·length :表示刻度线的长度。
·width : 表示刻度线的宽度。
·color :表示刻度线的颜色。
·pad : 表示刻度线与刻度标签的距离
·labelsize : 表示刻度标签的字体大小
·labelcolor:表示刻度标签的颜色。
·bottom,top,left,right :表示是否显示下方、上方、左侧、右侧的刻度线。·labelbottom,labeltop, labelleft, labelright : 表示是否显示下方、上方、左侧、右侧的刻度
标签。
·labelrotation:表示刻度标签旋转的角度。
例如,对坐标轴的刻度样式进行部分调整 :方向为朝外,长度为 6,宽度为2,颜色为红色,具体代码如下
plt.tick_params(direction='out',length=6,width=2,colors='r')

根据表的数据绘制一个折线图,具体要求如下:
(1) 在距画布顶部0.2、左侧0.2的位置上添加一个宽度为0.5、高度为0.5的绘图区域;

(2)x轴的刻度标签为周日期;

(3)刻度线样式调整:方向朝内、宽度为2,长度为8;

(4) 隐藏坐标轴的上轴脊、右轴脊。

import numpy as np
import matplotlib.pyplot as plt

# 0.设置中文黑体
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# 1.准备数据
x_data = np.arange(1, 8, 1)
y_data = [44.98, 45.02, 44.32, 41.05, 42.08, 42.08, 42.08]  # 周末休市

# 2.创建画布和坐标系
fig = plt.figure()
ax = fig.add_axes((0.2, 0.2, 0.5, 0.5))

# 3.绘图
ax.plot(x_data, y_data, 'mo-', markersize=15)

# 4.定制刻度
ax.set_xticks([1, 2, 3, 4, 5, 6, 7])
ax.set_xticklabels(['周一', '周二', '周三', '周四', '周五', '周六', '周日'])
ax.tick_params(direction='in', width=2, length=8)  # 刻度线样式调整
ax.xaxis.set_tick_params(labelrotation=30)  # 刻度标签旋转角度调整

# 5.设置轴标签
ax.set_xlabel('周日期')
ax.set_ylabel('收盘价(¥)')

# 6.隐藏上轴脊和右轴脊
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

# 7.展示图表
plt.show()

结果如下图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值