坐标轴的定制

       坐标轴的结构相同,主要包括轴脊刻度,其中刻度又可以细分为刻度线和刻度标签,刻度线又可以细分为主刻度线和次刻度线。坐标轴的各部分均是matplotlib类的对象:坐标轴是axis.Axis类的对象;轴脊是spines.Spine类的对象;刻度是axis.Ticker类的对象。此外,常用的x轴是一个axis.Xaxis类的对象,y轴是一个axis.Yaxis类的对象。如前所述的所有类的对象均包含于Axes类对象中,可通过Axes类的一些属性分别获取,关于这些属性的介绍如下。

  • xaxis : 获取x轴。
  • yaxis : 获取y轴。
  • spines :获取包含全部轴脊的字典。

访问 spines 属性后会返回一个OrderedDict类的对象。OrderedDict类是dict的子类,可以维护添加到字典中的键值对的顺序。例如,获取某坐标轴的全部轴脊,代码如下。

print(ax.spines)

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

axes(arg=None,projection=None,polar=False, aspect, frame_on,**kwargs)

该函数常用参数的含义如下。

(1)参数arg 支持 None、4-tuple中任一取值,每种取值的含义如下。

  • None : 表示使用subplot(111)添加的与画布同等大小的Axes对象。
  • 4-tuple :由4个浮点型元素(取值范围为0~1)组成的元组(left,bottom,width, height),前两个元素left 和bottom 分别表示坐标轴左侧和底部的边缘到画布的相对距离,用于确定坐标轴的位置;后两个元素width 和height分别表示坐标轴的宽度和高度,用于确定坐标轴的相对大小。

(2)参数projection表示坐标轴的类型。

可以是None、'aitoff"、'hammer'、'lambert'、'mollweide'、'polar' 或'rectilinear' 中的任一取值,也可以使用自定义的类型。

(3)参数polar 表示是否使用极坐标,若设为True,则其作用等价于projection='polar'。

(4)参数aspect 表示坐标轴缩放的比例,可接收'auto’、'equal、num 中任一取值。

(5)参数frame_on 表示是否绘制每个坐标轴的轴脊。

在matplotlib中,坐标轴的刻度有着固定的样式,例如,刻度线的方向是朝外的,刻度线的颜色是黑色的等。pyplot中可以使用tick_params()函数定制刻度的样式。
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 :表示刻度标签旋转的角度。

导入所需库与plt绘图模式

%matplotlib notebook

import numpy as np

import matplotlib.pyplot as plt

设置中文黑体

plt.rcParams["font.sans-serif"] = ["SimHei"]

plt.rcParams["axes.unicode_minus"] = False

准备数据

x_data = ('周一','周二','周三','周四','周五','周六','周日')

y_data = [44.98, 45.02, 44.32, 41.05, 42.08, 42.08, 42.08] # 周末休市

创建画布和坐标系

fig = plt.figure()

ax = plt.axes((0.3,0.3,0.5,0.5))

绘图

ax.plot(x_data,y_data,color='g',marker='o',markersize=15)

定制刻度

ax.xaxis.set_tick_params(direction='in',length=5,width=2,labelrotation=35)

ax.yaxis.set_tick_params(direction='in',length=5,width=2)

设置轴标签

设置 rotation参数可以随意调节y轴标题方向, rotation默认为90°,如果想将y轴标题调为垂直方向,则设为0。但这样也会带来一些问题,比如旋转后的标题不是位于上下方向的居中位置,可以调节y的值设置标题的上下位置,例如:

ax.set_xlabel('周日期')

ax.set_ylabel('收盘价(¥)',rotation=0,x=0.1,y=1)

隐藏上轴脊和右轴脊

ax.spines['top'].set_color('none')

ax.spines['right'].set_color('none')

展示图表

plt.show()

完整代码如下: 

%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
#设置中文黑体
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 1.准备数据
x_data = ('周一','周二','周三','周四','周五','周六','周日')
y_data = [44.98, 45.02, 44.32, 41.05, 42.08, 42.08, 42.08] # 周末休市
#创建画布和坐标系
fig = plt.figure()
# 在画布的任意位置添加指定大小的坐标系
ax = plt.axes((0.3,0.3,0.5,0.5))   # 画布的取值范围(0-1)
#绘图
ax.plot(x_data,y_data,color='g',marker='o',markersize=15)
#定制刻度
ax.xaxis.set_tick_params(direction='in',length=5,width=2,labelrotation=35)
ax.yaxis.set_tick_params(direction='in',length=5,width=2)
#设置轴标签
ax.set_xlabel('周日期')
ax.set_ylabel('收盘价(¥)',rotation=0,x=0.1,y=1)  
#隐藏上轴脊和右轴脊
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
#展示图表
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值