9.面积图
plt.fill_between()通过颜色填充来增强视觉效果
import matplotlib.pyplot as plt
import numpy as np
# 设置随机种子以保证结果可复现
np.random.seed(0)
# 生成时间序列数据
dates = np.arange('2023-01', '2023-12', dtype='datetime64[M]') # 从2023年1月到2023年12月
#dtype='datetime64[M]表示以月份为单位的日期时间数据
values = np.random.randn(len(dates)).cumsum() # 随机数据并累加以模拟趋势
# 使用 fill_between 填充颜色
plt.fill_between(dates, values, color="b", alpha=0.5)
plt.plot(dates, values, color="b", alpha=0.6, linewidth=2)
#格式化日期显示
plt.gcf().autofmt_xdate()
# 显示图形
plt.show()
10.多变量直方图
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
data3=np.random.normal(1,100,10)
data2=np.random.normal(1,100,10)
data1=np.random.normal(1,100,10)
#我这里数据集是用numpy库生成的
color=['r','b','m']
plt.hist([data1,data2,data3],color=color,stacked=True,density=False)
#首先导入多个数据集,每个数据集分配一个颜色,几个数据集就分配几个颜色
#stacked=True 表示堆叠显示,density=False 意味着y轴表示频率而不是密度
plt.show()
11.树形图
import matplotlib.pyplot as plt
import squarify
# 数据: 列表中的元组包含类别名称和数量
data = [
("subcompact", 35),
("suv", 62),
("compact", 41),
("pickup", 33),
("midsize minivan", 11),
("aseas2", 5)
]
colors=['m','c','g','b','r','0']
# 绘制树状图
squarify.plot(sizes=[d[1] for d in data], label=[d[0] for d in data], alpha=0.7, pad=True, color=colors)
#这里d[1]是取第二个元素就是我们的数据 d[0]提取名字
# label:一个列表,包含每个类别的名称。
# pad:是否在矩形之间添加间隙。
# 移除坐标轴
plt.axis('off')
plt.show()
12.波峰波谷时间序列
import matplotlib.pyplot as plt
# 示例数据
data = [112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 100, 118, 140, 158, 168, 170, 170, 179, 199, 215, 236]
# 找到峰顶和谷底
peaks = []
troughs = []
for i in range(1, len(data) - 1):
if data[i] > data[i - 1] and data[i] > data[i + 1]:
peaks.append(i)
elif data[i] < data[i - 1] and data[i] < data[i + 1]:
troughs.append(i)
#遍历数据列表(除了第一个和最后一个元素),如果当前元素大于其前后两个元素,则认为它是一个峰顶;
# 如果小于其前后两个元素,则认为它是一个谷底。将这些索引添加到相应的列表中。
plt.plot(data,marker='o')
# 绘制峰顶
plt.scatter(peaks, [data[i] for i in peaks], color='green', marker='^',s=100)
#使用 plt.scatter() 函数在峰顶的位置画上绿色的向上三角形
# 绘制谷底
plt.scatter(troughs, [data[i] for i in troughs], color='red', marker='v',s=100)
#在谷底的位置画上红色的向下三角形。
plt.grid(True)
#开启图表背景的网格线
# 显示图表
plt.show()
13.词云图
首先安装好jieba和wordcloud这两个工具
import jieba
from PIL import Image
from wordcloud import WordCloud
import numpy as np
import matplotlib.pyplot as plt
# 我们导入文本内容,并且去除掉一下换行符和空格,代码如下
text = "这是一个示例文本。我们将从中生成词云图。"
# 我们需要将其分成一个个的词,这个时候就需要用到jieba模块了,代码如下
text_cut = jieba.lcut(text)
# 将分好的词用某个符号分割开连成字符串
text_cut = ' '.join(text_cut)
# # 绘制词云图的核心代码
word_cloud = WordCloud(font_path="simsun.ttc", # 设置词云字体
background_color="white",# 词云图的背景颜色
)
word_cloud.generate(text_cut)
image = word_cloud.to_image()
image.show()
效果图如下
14.小提琴图
小提琴图的主要特点:
- 中心:显示数据的中位数。
- 四分位数:显示数据的第一四分位数(Q1)和第三四分位数(Q3)。
- 密度曲线:展示了数据在不同值上的概率密度,提供了比箱形图更丰富的信息。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 设置随机种子以便结果可复现
np.random.seed(0)
data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=2, scale=1.5, size=100)
all= [data1, data2]# 将数据合并到列表中
# 使用Seaborn绘制小提琴图
sns.violinplot(data=all, inner="quartile")
#"quartile" 选项会在小提琴图的内部绘制出四分位数(即第一四分位数、中位数和第三四分位数)
plt.show()