数据可视化---坐标轴的定制

题目一:

编写程序。根据6.2例1,在距当前画布左侧0.2、画布底部0.5的位置上添加一个宽度为0.3、高度为0.3的坐标系;在距画布左侧0.6、画布底部0.4的位置上添加一个宽度为0.2、高度为0.2的坐标系。绘制如下图。

执行代码:

import matplotlib.pyplot as plt
ax = plt.axes((0.2, 0.5, 0.3, 0.3))
ax.plot([1, 2, 3, 4, 5])
ax2 = plt.axes((0.6, 0.4, 0.2, 0.2))
ax2.plot([1, 2, 3, 4, 5])
plt.show()

执行结果:

题目二:根据刻度定位器绘制如下图

编写程序。根据6.3.1刻度定位器绘制如下图。

执行代码:

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator,LinearLocator


# 创建一个包含两个子图的图形,1行2列
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(10, 4), constrained_layout=True)

# 第一个子图
axs[0].set_xlim(-7.1, 47)
axs[0].xaxis.set_major_locator(MultipleLocator(6))  # 这里假设LinearLocator近似给出6个刻度

# 第二个子图,设置不同的x轴范围和LinearLocator
axs[1].set_xlim(-5, 47)
axs[1].xaxis.set_major_locator(LinearLocator(6))  # 使用LinearLocator来设置x轴刻度

# 显示图形
plt.show()

# 查看刻度的位置,分别打印出来
print('第一个子图的刻度位置:', axs[0].get_xticks())
print('第二个子图的刻度位置:', axs[1].get_xticks())

执行结果:

题目三:绘制展示深圳市24小时的平均风速的折线图

编写程序。根据实例1的要求,绘制展示深圳市24小时的平均风速的折线图,实现过程如下:

  1. 导入numpy、matplotlib.pyplot模块;
  2. 准备x轴和y轴的数据;
  3. 绘制一个带有右三角数据标记的折线图;
  4. 设置图表的标题为“深圳市24小时的平均风速”;
  5. 设置x轴的标签为“时间(h)”,y轴的标签为“平均风速(km/h)”;
  6. 设置x轴的刻度标签格式为月日:分”,且以两小时为间隔;

最终效果:

执行代码:

import numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, HourLocator
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
dates=['201910240','2019102402','2019102404','2019102406','2019102408',
       '2019102410','2019102412','2019102414','2019102416','2019102418',
       '2019102420','2019102422','201910250']
x_date = [datetime.strptime(d, '%Y%m%d%H')for d in dates]
y_date = np.array([7,9,11,14,8,15,22,11,10,11,11,13,8])
fig = plt.figure()
#决定了图形在画布的位置
ax=fig.add_axes((0.07, 0.13, 0.8, 0.8))
ax.plot(x_date, y_date, '->', ms=8, mfc='#FF9900')
ax.set_title('深圳市24小时的平均风速')
ax.set_xlabel('时间(h)')
ax.set_ylabel('平均风速(km/h)')
#设置x轴主刻度的位置和格式
date_fmt = DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(date_fmt)
ax.xaxis.set_major_locator(HourLocator(interval=2))
ax.tick_params(direction='in', length=6, width=2, labelsize=12)
ax.xaxis.set_tick_params(labelrotation = 45)
plt.show()

执行结果:

题目四:

编写程序。根据6.4.1隐藏全部轴脊,绘制下图

执行代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
polygon = mpathes.RegularPolygon((0.5, 0.5), 6, 0.2, color='g')
ax = plt.axes((0.3, 0.3, 0.5, 0.5))
ax.add_patch(polygon)
ax.axis('off')
plt.show()

执行结果:

题目五:

编写程序。根据6.4.2隐藏部分轴脊,绘制下图

执行代码:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
polygon = mpathes.RegularPolygon((0.5, 0.5), 5, 0.3, color='y')
ax = plt.axes((0.3, 0.3, 0.5, 0.5))
ax.add_patch(polygon)
# 依次隐藏上轴脊、左轴脊和右轴脊
ax.spines['top'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['right'].set_color('none')
#通过set_ticks_position()方法设置刻度线的颜色为’none’
#通过set_yticklabels()方法设置刻度标签为空列表
ax.yaxis.set_ticks_position('none')
ax.set_yticklabels([])
plt.show()

执行结果:

题目六:

编写程序。根据实例2的要求,绘制展示深圳市24小时的平均风速的折线图,在题目三的基础上添加“隐藏坐标轴的上轴脊和右轴脊”

执行代码:

import numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, HourLocator
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
dates=['201910240','2019102402','2019102404','2019102406','2019102408',
       '2019102410','2019102412','2019102414','2019102416','2019102418',
       '2019102420','2019102422','201910250']
x_date = [datetime.strptime(d, '%Y%m%d%H')for d in dates]
y_date = np.array([7,9,11,14,8,15,22,11,10,11,11,13,8])
fig = plt.figure()
ax=fig.add_axes((0.07, 0.13, 0.8, 0.8))
ax.plot(x_date, y_date, '->', ms=8, mfc='#FF9900')
ax.set_title('深圳市24小时的平均风速')
ax.set_xlabel('时间(h)')
ax.set_ylabel('平均风速(km/h)')
#设置x轴主刻度的位置和格式
date_fmt = DateFormatter('%H:%M')
ax.xaxis.set_major_formatter(date_fmt)
ax.xaxis.set_major_locator(HourLocator(interval=2))
ax.tick_params(direction='in', length=6, width=2, labelsize=12)
ax.xaxis.set_tick_params(labelrotation = 45)
#依次隐藏上轴脊和右轴脊
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
plt.show()

执行结果:

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值