Python 绘图颜色、技巧汇总

2023-12-13 14:38:21

往期精彩内容:

深度学习论文模型图的绘制与分享

Python绘制高级图-代码分享

Python绘制多分类ROC曲线

引言

在论文绘图中,最重要的是准确传达数据和信息。无论是实验结果图、统计图表还是概念图示,图像应当清晰明了地展示研究结果和观点。无论用什么软件,以下几个原则十分重要:

  • 数据准确性:确保图表中的数据准确无误,不要出现错误的标注或显示。

  • 清晰度和分辨率:图像的分辨率需要足够高,以便在打印或放大时仍然保持清晰度。确保图像的分辨率符合期刊的要求。

  • 图像格式:选择适合的图像格式,确保图像在不同环境下都能够清晰显示。

  • 配色和样式:选择合适的配色方案,确保图像的颜色搭配清晰明了,同时符合期刊的要求。

  • 图像说明和标注:图像应当配有清晰的说明和标注,以便读者理解图像所传达的信息。

其中操作空间最高的当属配色和样式了。

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)

文章来源:https://blog.csdn.net/qq_40949048/article/details/134868823
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。