文章目录
专栏导读
大家好,我是i阿极,本专栏的文章上过👍每日必看榜👍每周必看榜👍每月必看榜。喜欢本专栏的小伙伴们可以订阅
《数据分析之道-Matplotlib》 |
---|
【数据分析之道-Matplotlib(一)】Matplotlib Pyplot |
【数据分析之道-Matplotlib(二)】Matplotlib 绘图标记 |
【数据分析之道-Matplotlib(三)】Matplotlib 绘制子图 |
【数据分析之道-Matplotlib(四)】Matplotlib散点图 |
【数据分析之道-Matplotlib(五)】Matplotlib柱状图 |
【数据分析之道-Matplotlib(六)】Matplotlib饼图 |
【数据分析之道-Matplotlib(七)】Matplotlib直方图 |
【数据分析之道-Matplotlib(八)】Matplotlib箱线图 |
1、Matplotlib棉棒图stem()基本语法
在Matplotlib中,可以使用stem()来绘制棉棒图。棉棒图是柱状图的变形,可以把它看成特殊的柱状图。
stem()函数用于绘制离散数据的垂直线图,常用于显示离散的数据点以及它们的垂直变化。
stem()函数的基本语法如下:
plt.stem(x, y, linefmt=None, markerfmt=None, basefmt=None, bottom=None, label=None)
常用参数的含义如下:
- x:指定每个数据点的 x 坐标,可以是一个数值序列。
- y:指定每个数据点的 y 坐标,可以是一个数值序列。
- linefmt(可选):指定连接数据点的线的样式,如颜色、线型等。
- markerfmt(可选):指定数据点的标记的样式,如颜色、形状等。
- basefmt(可选):指定基线(零线)的样式。
- bottom(可选):指定基线(零线)的位置,默认为0。
- label(可选):指定图例中的标签。
下面是一个简单的示例:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 5, 3]
plt.stem(x, y, linefmt='r-', markerfmt='ro', basefmt='k-', label='data')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Stem Plot')
plt.legend()
plt.show()
2、Matplotlib棉棒图stem()定义样式
为了让棉棒图更加美观,stem()提供了很多用于定义样式的参数,常用的有两个:linemt和markerfmt。
2.1linefmt参数
linefmt参数用于指定棉棒图的线条样式:
取值 | 说明 |
---|---|
‘-’ | 实线 |
‘–’ | 虚线 |
‘-.’ | 点划线 |
‘:’ | 点线 |
2.2markerfmt参数
markerfmt参数用于指定棉棒图上每个数据点的标记样式:
取值 | 说明 |
---|---|
‘.’ | 小圆点 |
‘o’ | 大圆点 |
‘s’ | 正方形 |
‘d’ | 菱形 |
‘p’ | 五角星 |
‘h’ | 六边形 |
‘v’ | 倒三角形 |
‘^’ | 正三角形 |
‘<’ | 左三角形 |
‘>’ | 右三角形 |
‘*’ | 星形 |
2.3举例一:直线样式
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 5, 3]
plt.stem(x, y, linefmt='-.', markerfmt='ro', basefmt='k-', label='data')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Stem Plot')
plt.legend()
plt.show()
2.4举例二:圆点样式
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 1, 5, 3]
plt.stem(x, y, markerfmt='ro', label='data')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Stem Plot')
plt.legend()
plt.show()
3、棉棒图案例实战
3.1绘制每月销量的棉棒图
import pandas as pd
import matplotlib.pyplot as plt
# 设置
plt.rcParams["font.family"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 读取数据
df = pd.read_csv(r"D:\CSDN\data\product.csv")
# 绘制图表
plt.stem(df["月份"], df["销量"])
# 定义标题
plt.title("每月销量棉棒图")
plt.xlabel("月份", loc="right")
plt.ylabel("销量", loc="top")
# 刻度标签
plt.xticks(range(1, 13))
# 显示
plt.show()
3.2绘制每月销量与平均销量之差
import matplotlib.pyplot as plt
# 设置
plt.rcParams["font.family"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 读取数据
df = pd.read_csv(r"data/product.csv")
# 求平均值
mean = df["销量"].mean()
# 求与平均值之差(利用广播机制)
df["差值"] = df["销量"] - mean
# 绘制图表
plt.stem(df["月份"], df["差值"])
# 定义标题
plt.title("每月销量棉棒图")
plt.xlabel("月份", loc="right")
plt.ylabel("销量", loc="top")
# 刻度标签
plt.xticks(range(1, 13))
# 显示
plt.show()