主要讲解的是坐标轴的定制,包括向任意位置添加坐标轴、定制刻度、隐藏坐标轴的轴脊和移动轴脊
下面我们来举一个例子来学习一下坐标轴的定制
绘制某股票一周内收盘价折线图
%matplotlib notebook
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, ax = plt.subplots()
3.绘图
ax.plot(x_data, y_data)
4.定制刻度
ax.set_xticks(x_data)
ax.set_yticks(np.arange(40,46,0.5)) # 设置y轴刻度范围和步长
5.设置轴标签
ax.set_xlabel('日期')
ax.set_ylabel('收盘价')
6.隐藏上轴脊和右轴脊
ax.spines['right'].set_visible(False) # 隐藏右边的轴脊
ax.spines['top'].set_visible(False) # 隐藏上边的轴脊
# 7.展示图表
plt.show()
成果展示图如下
# matplotlib中文网 https://www.matplotlib.org
# 需求一:绘制某股票一周内收盘价折线图(见运行结果展示图)
%matplotlib notebook
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, ax = plt.subplots()
# 3.绘图
ax.plot(x_data, y_data)
# 4.定制刻度
ax.set_xticks(x_data)
ax.set_yticks(np.arange(40,46,0.5)) # 设置y轴刻度范围和步长
# 5.设置轴标签
ax.set_xlabel('日期')
ax.set_ylabel('收盘价')
# 6.隐藏上轴脊和右轴脊
ax.spines['right'].set_visible(False) # 隐藏右边的轴脊
ax.spines['top'].set_visible(False) # 隐藏上边的轴脊
# 7.展示图表
plt.show()
Python matplotlib库中axes()函数详解
在Python的matplotlib库中,axes()函数用于创建坐标轴。这是一个非常基础的函数,其具体的语法格式取决于你要创建的坐标轴类型。
通常情况下,axes()函数可以接受以下参数:
- projection:这定义了坐标轴的类型,例如'rectilinear'(默认)用于直坐标轴,'polar'用于极坐标轴。
- subplot:这可以创建一个子图。例如,如果你正在使用figure()函数创建一个新的图形,并且希望在图形上创建一个子图,你可以使用subplot()函数。
- sharex, sharey:这允许你与其他坐标轴共享x或y轴。
- axespos:这允许你设置坐标轴的位置。
- frame_on:这允许你决定是否显示坐标轴的框架。
所以,一个典型的axes()函数的调用可能看起来像这样:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='polar') # 创建一个极坐标轴
如果你想与另一个坐标轴共享x或y轴,你可以这样做:
fig = plt.figure()
ax1 = fig.add_subplot(111) # 创建第一个坐标轴
ax2 = fig.add_axes([ax1.xaxis.get_window_extent().x0, 0, 0.5, ax1.yaxis.get_window_extent().y0-ax1.yaxis.get_position().width]) # 创建第二个坐标轴,与第一个共享x轴
在特定的上下文中,Locator的常见子类可能包括:
1. **HourLocator**:这是一个特殊的刻度定位器,它用于在时间轴上定位小时。它的构造函数接受参数如byhour,interval,和tz。
2. **MinuteLocator**:这个定位器用于在时间轴上定位分钟。
3. **SecondLocator**:这个定位器用于在时间轴上定位秒。
4. **DayLocator**:这个定位器用于在时间轴上定位天。
5. **MonthLocator**:这个定位器用于在时间轴上定位月。
6. **YearLocator**:这个定位器用于在时间轴上定位年。
formatter是指刻度格式器的基类,它的一些常见子类可能包括以下几种:
1. **NumberFormatter**:这是一个数字刻度格式器,用于将数字值转换为字符串表示形式。
2. **DateFormatter**:这是一个日期刻度格式器,用于将日期值转换为字符串表示形式。
3. **TimeFormatter**:这是一个时间刻度格式器,用于将时间值转换为字符串表示形式。
4. **CurrencyFormatter**:这是一个货币刻度格式器,用于将货币值转换为字符串表示形式。
5. **PercentageFormatter**:这是一个百分比刻度格式器,用于将百分比值转换为字符串表示形式。
6. **ScientificFormatter**:这是一个科学刻度格式器,用于将科学计数法表示的值转换为字符串表示形式。
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:表示刻度线与刻度标签的距离。
. labelize :表示刻度标签的字体大小。
. labelcolor :表示刻度标签的颜色。
: botom, top, lef, right:表示是否显示下方、 上方、左侧、右侧的刻度线。:
bebotom, lblo, lbele, helright : 表示是否显示下方、上方、左侧、右侧的刻度标签
labelrotaion :表示刻度标签旋转的角度。
隐藏轴脊
asis()函数的语法格式:
axis(option,*args,**kwargs)
该函数的参数option可以接收布尔值或字符串。其中,布尔值True表示显示轴脊和刻度,False表示隐藏轴脊和刻度。字符串通常可以是以下任一-取值:
'on':显示轴脊和刻度,等同于True。
'of :隐藏轴脊和刻度,等同于False。
'equal' :通过更改轴限设置等比例。
'scaled' :通过更改绘图框的尺寸设置等比例。
'tight' :设置足够大的限制以显示所有的数据。
'auto' :自动缩放。
此外,Axes 类的对象也可以使用axis(0方法隐藏坐标轴的轴脊。
隐藏部分轴脊
依次隐藏上轴脊、左轴脊和右轴脊
ax.spines['top'].set_visible('none')
ax.spines['left'].set_visible('none')
ax.spines['right'].set_visible('none')