获取网站服务器信息,施工企业资质,WordPress配置头像路径,app wordpress数据可视化#xff08;二#xff09; 写在前面百分比堆叠线条图优点缺点实现pythonmatlab 火山图优点实现pythonmatlab 最后 写在前面
上一篇文章为大家分享了山脊图和气泡图的绘图方法与代码#xff0c;这里学姐为继续为大家分享百分比堆叠线条图和火山图#xff0c;包含… 数据可视化二 写在前面百分比堆叠线条图优点缺点实现pythonmatlab 火山图优点实现pythonmatlab 最后 写在前面
上一篇文章为大家分享了山脊图和气泡图的绘图方法与代码这里学姐为继续为大家分享百分比堆叠线条图和火山图包含matlab和python的完整代码需要完整代码的同学看文章最后另外如果没有美赛经验想要获奖欢迎咨询哦~
百分比堆叠线条图
百分比堆叠线条图是一种数据可视化工具它结合了堆叠面积图和线条图的特点。在这种图表中时间序列数据被分成几个部分每个部分代表一个类别所有类别的值加起来总和为100%。这种图的每个点的堆叠区域代表不同类别在特定时间点的百分比贡献。
优点
展示趋势和组成 百分比堆叠线条图可以同时显示各个组成部分随时间变化的趋势以及它们对总量的相对贡献。比较容易 由于总量始终为100%用户可以很容易地比较不同类别在不同时间点的相对大小。节省空间相比于多个分开的图表一个百分比堆叠线条图能在单一视图中显示多个类别的信息。视觉连续性这种图表类型利用颜色和堆叠区域的连续性有助于观察者追踪随时间变化的趋势。
缺点
局限性 只能显示部分总和恒等于100%的数据不适合绝对值变化很大的数据。误导性 如果某个类别的变化很大可能会造成视觉上的误导观察者可能认为其他类别也有相同比例的变化。难以精确读取 对于堆叠的中间部分很难从图表中读取精确的数值尤其是当多个类别颜色相似或者区域较小的时候。顺序敏感性 类别的堆叠顺序可能会影响读图的难易程度一般来说底部的类别最容易读取而上层的则较难。
实现
在实际应用中选择使用百分比堆叠线条图还是其他类型的图表应该基于数据的特点以及想要传达的信息。如果目标是展示多个类别随时间的相对变化并且每个类别的总和固定则百分比堆叠线条图是一个很好的选择。如果数据中的类别总和不是固定的或者需要展示绝对值的变化则可能需要选择其他类型的图表。 python
import matplotlib.pyplot as plt
import numpy as np# Create sample data
categories [Category 1, Category 2, Category 3, Category 4]
months [January, February, March, April, May, June]
data np.array([[20, 30, 35, 35, 30, 25], # Category 1[25, 25, 25, 20, 20, 25], # Category 2[30, 25, 20, 25, 30, 30], # Category 3[25, 20, 20, 20, 20, 20] # Category 4
])# Normalize data to sum to 1 (100%)
data_perc data / data.sum(axis0)# Plot stackplot
fig, ax plt.subplots(figsize(10, 6))
ax.stackplot(months, data_perc, labelscategories)# Add legend
ax.legend(locupper left)# Add titles and labels
ax.set_title(Percentage Stacked Line Bar Chart Example)
ax.set_ylabel(Percentage)
ax.set_xlabel(Month)# Display the plot
plt.tight_layout()
plt.show()为了对百分比堆叠线条图进行了美化使用了一组更鲜明的颜色来区分不同的类别。 在每个类别的边缘添加了更清晰的界限添加了网格线以提高可读性旋转了X轴标签使它们更易读增加了标题和轴标签的字体大小并使标题加粗 改进了图例的显示位置并调整了字体大小设置Y轴以显示百分比符号。如下所示
matlab % Sample data for the four categories over six months
data [
20 30 35 35 30 25; % Category 1
25 25 25 20 20 25; % Category 2
30 25 20 25 30 30; % Category 3
25 20 20 20 20 20 % Category 4
];% Normalize the data to sum to 100%
data_perc bsxfun(rdivide, data, sum(data)) * 100;% Create a vector to represent the months as numbers
months_num 1:6;% Plot the area
fig figure;
ax axes(fig);
stackedarea area(ax, months_num, data_perc, LineStyle, none);% Define the colors for each category
colors lines(4); % Generate 4 distinct colors% Apply the colors to the areas
for i 1:length(stackedarea)
stackedarea(i).FaceColor colors(i,:);
end% Customize the axes and the plot
set(ax, XTick, months_num, XTickLabel, {January, February, March, April, May, June});
ylabel(Percentage);
title(Percentage Stacked Line Bar Chart Example);
legend({Category 1, Category 2, Category 3, Category 4}, Location, EastOutside);
grid on;% Add Y-axis labels with percentage
yticks get(ax, ytick);
new_labels strcat(num2str(yticks), %);
set(ax, yticklabel, new_labels);火山图
火山图是生物信息学中常用的一种图表用来显示基因表达数据的变化。它通常将每个点表示为一个基因x轴显示对数比率log ratio表示基因表达的变化大小y轴显示-log10(p-value)表示变化的统计显著性。在火山图中通常会看到分布在两侧的点表示表达上升或下降的基因而分布在中间的点表示没有显著变化的基因。这种图表有助于快速识别在特定条件下显著上调或下调的基因。
火山图是一种功能强大的数据展示方法它不仅能够显示单个基因或蛋白质的变化还能在生物学上下文中提供这些变化的全局视图。通过这种方式火山图帮助研究人员理解实验条件下生物学系统的整体响应。
优点
差异表达基因的可视化火山图是用来直观显示成千上万个基因或蛋白质之间表达水平差异显著性的工具。每个点代表一个基因或蛋白质它的位置基于表达变化的大小通常是对数变化率和这种变化的统计显著性。筛选重要目标火山图可以用来快速识别和筛选出那些表达变化最大且统计显著的基因或蛋白质。这些通常是研究中的关键分子可能是疾病标记物或药物靶标。趋势观察通过观察点的分布研究人员可以了解基因表达变化的总体趋势例如是否有很多基因表达上升或下降以及变化是否集中在某个特定区域。数据质量评估火山图也可以帮助研究人员评估实验数据的质量。理想情况下大多数基因应该集中在图的中部表示没有显著差异而显著差异的基因应该均匀地分布在左右两侧。交互式探索现代生物信息学软件提供的火山图通常是交互式的允许用户点击特定的点来获取更多关于该基因或蛋白质的信息如名称、功能以及与其他分子的关联。组合其他分析火山图常与其他生物信息学工具和分析结合使用比如富集分析、网络分析等来进一步探索和解释数据中的生物学现象。通信工具作为一种强有力的视觉工具火山图可以在学术出版物、研究报告和演示中帮助解释复杂的统计数据并传达研究的关键发现。
实现
python
import matplotlib.pyplot as plt
import numpy as np# 生成示例数据
np.random.seed(0)
x np.random.normal(size1000)
y -np.log10(np.random.uniform(low0.001, high1.0, size1000))# 分类条件随机分配仅用于示例
conditions np.random.choice([up, down, nodiff], size1000, p[0.1, 0.1, 0.8])# 创建火山图
plt.figure(figsize(8, 6))
plt.scatter(x[conditions up], y[conditions up], colorr, labelup)
plt.scatter(x[conditions down], y[conditions down], colorb, labeldown)
plt.scatter(x[conditions nodiff], y[conditions nodiff], colorgrey, alpha0.5, labelnodiff)# 添加必要的标签和标题
plt.title(Volcano Plot)
plt.xlabel(Log2 Fold Change)
plt.ylabel(-Log10 p-value)# 添加图例
plt.legend()# 显示图表
plt.show()matlab % 假设数据
logFoldChange randn(1000,1); % 随机生成对数变化倍数
pValues rand(1000,1); % 随机生成p值% 设置阈值
pValueThreshold 0.05; % p值显著性阈值
logFoldChangeThreshold 1; % 对数变化倍数阈值% 计算统计显著性
negLogPValues -log10(pValues); % 计算负对数p值% 分类基因表达变化
upRegulated logFoldChange logFoldChangeThreshold pValues pValueThreshold;
downRegulated logFoldChange -logFoldChangeThreshold pValues pValueThreshold;
notRegulated ~upRegulated ~downRegulated;% 绘制火山图
figure;
hold on;
scatter(logFoldChange(upRegulated), negLogPValues(upRegulated), 40,blue, filled);
scatter(logFoldChange(downRegulated), negLogPValues(downRegulated), 40, red, filled);
scatter(logFoldChange(notRegulated), negLogPValues(notRegulated), 10, black);% 标注显著的点
significantPoints find(pValues pValueThreshold);
for i 1:length(significantPoints)
text(logFoldChange(significantPoints(i)), negLogPValues(significantPoints(i)), ...
num2str(significantPoints(i)), FontSize, 8);
end% 增加参考线
line(xlim(), [-log10(pValueThreshold) -log10(pValueThreshold)], Color, green, LineStyle, --);
line([-logFoldChangeThreshold -logFoldChangeThreshold], ylim(), Color, green, LineStyle, --);
line([logFoldChangeThreshold logFoldChangeThreshold], ylim(), Color, green, LineStyle, --);% 添加轴标签和标题
xlabel(Log2 Fold Change);
ylabel(-Log10 p-Value);
title(Volcano Plot);% 添加图例
legend({Up-regulated, Down-regulated, Not significant}, Location, northeastoutside);% 格式化图像
set(gca, FontSize, 12);
grid on;
hold off;为了进一步美化我们可以添加一些额外的格式设置例如自定义颜色透明度以及改进的标注。如下所示
最后 更多完整绘图代码可以看下面哦可免费获取。