Python 绘图颜色、技巧汇总
往期精彩内容:
引言
在论文绘图中,最重要的是准确传达数据和信息。无论是实验结果图、统计图表还是概念图示,图像应当清晰明了地展示研究结果和观点。无论用什么软件,以下几个原则十分重要:
-
数据准确性:确保图表中的数据准确无误,不要出现错误的标注或显示。
-
清晰度和分辨率:图像的分辨率需要足够高,以便在打印或放大时仍然保持清晰度。确保图像的分辨率符合期刊的要求。
-
图像格式:选择适合的图像格式,确保图像在不同环境下都能够清晰显示。
-
配色和样式:选择合适的配色方案,确保图像的颜色搭配清晰明了,同时符合期刊的要求。
-
图像说明和标注:图像应当配有清晰的说明和标注,以便读者理解图像所传达的信息。
其中操作空间最高的当属配色和样式了。
1?Python复现SCI论文插图经典配色
下面参考顶刊SCI论文插图经典配色,利用python进行复现。
SCI论文插图经典配色来源:知乎up主-阿昆的科研日常
1.1计算Matplotlib中的RGB格式数值
上述配色都是软件Matlab的RGB格式,其取值范围在0-255 ,而Python中的Matplotlib库中支持使用RGB格式取值范围通常在0到1之间,所以需要将每个颜色通道的取值除以 255,以得到在 0 到 1 之间的标准化取值,按照以下方式转换:
R_normalized = R / 255?
G_normalized = G / 255?
B_normalized = B / 255
比如复现经典配色实例No.017? ??????
clolor_zise = (0.267, 0.16, 0.353)
clolor_zanglan = (0.255, 0.243, 0.522)
clolor_shenlan = (0.188, 0.408, 0.553)
clolor_lanlv = (0.122, 0.573, 0.545)
clolor_lvse = (0.208, 0.718, 0.467)
clolor_lvhuang = (0.569, 0.835, 0.259)
clolor_huangse = (0.973, 0.902, 0.125)
2.2数据准备
绘制某模型在0db、50db、40db、30db、20db噪声下的训练、验证、测试准确率的柱状图
# 数据
labels = ['0DB', '50DB', '40DB', '30DB', '20DB']
train_accuracy = [99.93, 99.86, 99.85, 99.82, 99.70]
validation_accuracy = [99.27, 98.54, 98.52, 98.08, 94.47]
test_accuracy = [99.48, 98.70, 97.61, 97.44, 95.01]
2.3绘图
# 绘制柱状图
plt.figure(figsize=(8,4), dpi=300)
# 柱子宽度比例
width = 0.15
plt.bar(x, train_accuracy, width, label='Train Accuracy', color=clolor_huangse)
plt.bar([i + width for i in x], validation_accuracy, width, label='Validation Accuracy', color=clolor_lanlv)
plt.bar([i + 2 * width for i in x], test_accuracy, width, label='Test Accuracy', color=clolor_zise)
# 设置 X 轴标签
plt.xlabel('Noise level')
# 设置 Y 轴标签
plt.ylabel('Accuracy (%)')
# 设置 X 轴刻度
plt.xticks([i + width for i in x], labels)
# 隐藏上方和右侧的轴线
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False)
# 显示X轴和Y轴
plt.gca().get_xaxis().tick_bottom()
plt.gca().get_yaxis().tick_left()
# 添加数值标签
rotation_angle = 'vertical' # 设置文本旋转角度为垂直
for i in x:
plt.text(i, train_accuracy[i] + 2, str(train_accuracy[i]), ha='center', va='bottom', fontsize=8, rotation=rotation_angle)
plt.text(i + width, validation_accuracy[i] + 2, str(validation_accuracy[i]), ha='center', va='bottom', fontsize=8, rotation=rotation_angle)
plt.text(i + 2 * width, test_accuracy[i] + 2, str(test_accuracy[i]), ha='center', va='bottom', fontsize=8, rotation=rotation_angle)
# 显示图例,设置列数为3
plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.2), frameon=False, ncol=3)
# 显示图形
plt.show()
2 Python作图颜色汇总
2.1Matplotlib颜色对照表
颜色对照表来源:matplotlib颜色表 - FINTHON
2.2 Matplotlib16进制描述颜色
cnames = { 'aliceblue': '#F0F8FF', 'antiquewhite': '#FAEBD7', 'aqua': '#00FFFF', 'aquamarine': '#7FFFD4', 'azure': '#F0FFFF', 'beige': '#F5F5DC', 'bisque': '#FFE4C4', 'black': '#000000', 'blanchedalmond': '#FFEBCD', 'blue': '#0000FF', 'blueviolet': '#8A2BE2', 'brown': '#A52A2A', 'burlywood': '#DEB887', 'cadetblue': '#5F9EA0', 'chartreuse': '#7FFF00', 'chocolate': '#D2691E', 'coral': '#FF7F50', 'cornflowerblue': '#6495ED', 'cornsilk': '#FFF8DC', 'crimson': '#DC143C', 'cyan': '#00FFFF', 'darkblue': '#00008B', 'darkcyan': '#008B8B', 'darkgoldenrod': '#B8860B', 'darkgray': '#A9A9A9', 'darkgreen': '#006400', 'darkkhaki': '#BDB76B', 'darkmagenta': '#8B008B', 'darkolivegreen': '#556B2F', 'darkorange': '#FF8C00', 'darkorchid': '#9932CC', 'darkred': '#8B0000', 'darksalmon': '#E9967A', 'darkseagreen': '#8FBC8F', 'darkslateblue': '#483D8B', 'darkslategray': '#2F4F4F', 'darkturquoise': '#00CED1', 'darkviolet': '#9400D3', 'deeppink': '#FF1493', 'deepskyblue': '#00BFFF', 'dimgray': '#696969', 'dodgerblue': '#1E90FF', 'firebrick': '#B22222', 'floralwhite': '#FFFAF0', 'forestgreen': '#228B22', 'fuchsia': '#FF00FF', 'gainsboro': '#DCDCDC', 'ghostwhite': '#F8F8FF', 'gold': '#FFD700', 'goldenrod': '#DAA520', 'gray': '#808080', 'green': '#008000', 'greenyellow': '#ADFF2F', 'honeydew': '#F0FFF0', 'hotpink': '#FF69B4', 'indianred': '#CD5C5C', 'indigo': '#4B0082', 'ivory': '#FFFFF0', 'khaki': '#F0E68C', 'lavender': '#E6E6FA', 'lavenderblush': '#FFF0F5', 'lawngreen': '#7CFC00', 'lemonchiffon': '#FFFACD', 'lightblue': '#ADD8E6', 'lightcoral': '#F08080', 'lightcyan': '#E0FFFF', 'lightgoldenrodyellow': '#FAFAD2', 'lightgreen': '#90EE90', 'lightgray': '#D3D3D3', 'lightpink': '#FFB6C1', 'lightsalmon': '#FFA07A', 'lightseagreen': '#20B2AA', 'lightskyblue': '#87CEFA', 'lightslategray': '#778899', 'lightsteelblue': '#B0C4DE', 'lightyellow': '#FFFFE0', 'lime': '#00FF00', 'limegreen': '#32CD32', 'linen': '#FAF0E6', 'magenta': '#FF00FF', 'maroon': '#800000', 'mediumaquamarine': '#66CDAA', 'mediumblue': '#0000CD', 'mediumorchid': '#BA55D3', 'mediumpurple': '#9370DB', 'mediumseagreen': '#3CB371', 'mediumslateblue': '#7B68EE', 'mediumspringgreen': '#00FA9A', 'mediumturquoise': '#48D1CC', 'mediumvioletred': '#C71585', 'midnightblue': '#191970', 'mintcream': '#F5FFFA', 'mistyrose': '#FFE4E1', 'moccasin': '#FFE4B5', 'navajowhite': '#FFDEAD', 'navy': '#000080', 'oldlace': '#FDF5E6', 'olive': '#808000', 'olivedrab': '#6B8E23', 'orange': '#FFA500', 'orangered': '#FF4500', 'orchid': '#DA70D6', 'palegoldenrod': '#EEE8AA', 'palegreen': '#98FB98', 'paleturquoise': '#AFEEEE', 'palevioletred': '#DB7093', 'papayawhip': '#FFEFD5', 'peachpuff': '#FFDAB9', 'peru': '#CD853F', 'pink': '#FFC0CB', 'plum': '#DDA0DD', 'powderblue': '#B0E0E6', 'purple': '#800080', 'red': '#FF0000', 'rosybrown': '#BC8F8F', 'royalblue': '#4169E1', 'saddlebrown': '#8B4513', 'salmon': '#FA8072', 'sandybrown': '#FAA460', 'seagreen': '#2E8B57', 'seashell': '#FFF5EE', 'sienna': '#A0522D', 'silver': '#C0C0C0', 'skyblue': '#87CEEB', 'slateblue': '#6A5ACD', 'slategray': '#708090', 'snow': '#FFFAFA', 'springgreen': '#00FF7F', 'steelblue': '#4682B4', 'tan': '#D2B48C', 'teal': '#008080', 'thistle': '#D8BFD8', 'tomato': '#FF6347', 'turquoise': '#40E0D0', 'violet': '#EE82EE', 'wheat': '#F5DEB3', 'white': '#FFFFFF', 'whitesmoke': '#F5F5F5', 'yellow': '#FFFF00', 'yellowgreen': '#9ACD32'}
上述16进制描述的颜色具体对应以下颜色
3 python中Matplotlib的颜色及线条控制
3.1Matplotlib默认颜色
?Matplotlib自带的颜色搭配也比较好看,默认的是一共10种颜色,超过次数后就会循环使用:
默认颜色的对应参数和颜色名称如下所示:
3.2Matplotlib线条控制
marker参数以及形状如下所示:
'.' point marker
',' pixel marker
'o' circle marker
'v' triangle_down marker
'^' triangle_up marker
'<' triangle_left marker
'>' triangle_right marker
'1' tri_down marker
'2' tri_up marker
'3' tri_left marker
'4' tri_right marker
's' square marker
'p' pentagon marker
'*' star marker
'h' hexagon1 marker
'H' hexagon2 marker
'+' plus marker
'x' x marker
'D' diamond marker
'd' thin_diamond marker
'|' vline marker
'_' hline marker
参考资料
[1]阿昆的科研日常,跟顶刊学配色!SCI论文插图经典配色实例第1期 - 知乎 (zhihu.com)
[2]darkknightzh,(原)python中matplotlib的颜色及线条控制 - darkknightzh - 博客园 (cnblogs.com)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!