matplotlib配置图的属性

本文详细介绍使用matplotlib.pyplot模块绘制图像时,如何设置线的属性、图形属性、坐标轴范围及标记等,包括线宽、颜色、透明度、图例位置、坐标轴标记和特殊点标注的方法。

介绍一下使用 matplotlib.pyplot 模块绘制图像时,图像的常用属性设置。

1.模块导入

import matplotlib.pyplot as plt

plt.plot(x, y, **kwargs)

2.设置线的属性

  • pyplot可以设置线的很多属性,如线宽/虚线样式/抗锯齿等。

  • 以下是几种设置线的属性的实现方式:

    • 使用 **kwargs 关键字设置:如 plt.plot(x, y, linewidth=)
      , color=‘r’)
    • 使用 setp() 函数统一设置线的属性,如:
    lines = plt.plot(x1, y1, x2, y2)
    plt.setp(lines, color='r', linewidth=2.0)
    

3. Line2D的属性

属性代表含义取值备注
alpha透明度float1.0表示不透明
color or c颜色any matplotlib color颜色取值见附录一
label图例any string应配合legend()使用
linestyle or ls线的类型‘-’ ‘–’ ‘-.’ ‘:’
linewidth线宽float像素值,值不能加引号
marker数据点标记‘.’, ‘,’, ‘o’, ‘v’, ‘^’, ‘<’, ‘>’, ‘1’, ‘2’, ‘3’, ‘4’, ‘s’, ‘p’, ‘*’, ‘h’, ‘H’, ‘+’, ‘D’, ‘d’, ‘|’, ‘_’

4.设置图形属性

  • 制定图例的显示位置:legend(loc=‘upper left’, *args)。

    • loc 可取的值有:
    string对应数字
    ‘best’0
    ‘upper right’1
    ‘upper left’2
    ‘lower left’3
    ‘lower right’4
    ‘right’5
    ‘center left’6
    ‘center right’7
    ‘lower center’8
    ‘upper center’9
    ‘center’10
  • 设置x、y坐标轴的范围:xlim(xmin, xmax), ylim(ymin, ymax)

plt.xlim(x.min() - 0.2, x.max() + 0.2)
plt.ylim(y.min() - 0.2, y.max() + 0.2)
  • 设置坐标轴标记:plt.xticks(locs, [labels], **kwargs), plt.yticks(locs, [labels], **kwargs)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'])
plt.yticks([-1, 0, +1])
  • 对图中一些特殊点做标记: annotate(),详使用可参照源码
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
         xy=(t, np.cos(t)), xycoords='data',
         xytext=(-90, -50), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
  • 设置图像的大小/分辨率等:figure(**kwargs), kwargs可选值如下:
参数描述
num图像的数量
figsize图像的长和宽(英寸)
dpi分辨率(点/英寸)
facecolor绘图区域的背景颜色
edgecolor绘图区域边缘的颜色
frameon是否绘制图像边缘

附录一:matplotlib color值

颜色名称RGB表示
‘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’}
### Matplotlib 图形配置方法及参数说明 #### 配置全局默认样式 Matplotlib 提供了一种机制来设置图形的全局默认样式,这可以通过修改 `rcParams` 字典或使用 `plt.rc()` 函数实现。这些设置会在整个会话期间生效,并应用于所有后续创建的图表。 ```python import matplotlib.pyplot as plt # 设置分辨率为300 DPI plt.rcParams['figure.dpi'] = 300 # 使用 rcParams 修改属性[^1] # 或者使用 plt.rc 方法 plt.rc('figure', dpi=300) # 同样效果的不同方式 ``` #### 自定义单个图表元素 除了全局配置外,还可以针对特定图表中的各个组件进行个性化定制。例如,可以控制坐标轴上的刻度位置及其显示格式: ```python import numpy as np import matplotlib.pyplot as plt ax = plt.axes() data = np.random.rand(50) ax.plot(data) # 完全移除 Y 轴上的所有标签和刻度线 ax.yaxis.set_major_locator(plt.NullLocator()) # 只隐藏 X 轴上的标签而不影响其刻度标记 ax.xaxis.set_major_formatter(plt.NullFormatter()) plt.show() ``` 上述代码展示了如何分别处理两个不同的坐标轴——Y 和 X 的可见性和布局特性。 #### 添加注释与箭头指示 为了增强数据可视化的效果,在某些情况下可能希望向图像中添加额外的信息提示。这时可利用 `annotate()` 来插入带有指向性的文本框以及连接两者的线条(通常是带尖端的小箭头),从而更直观地解释重要特征点。 ```python x_values = np.arange(0, 6) y_values = x_values ** 2 plt.plot(x_values, y_values, marker='o') for point in zip(x_values, y_values): plt.annotate(f"({point[0]}, {point[1]})", xy=point, xytext=(-20, 10), textcoords='offset points') # 特殊标注最大值处 plt.annotate('max', xy=(5, 25), # 注解目标位置 xytext=(4.3, 15), # 文本偏移量 arrowprops={'facecolor': 'black', 'shrink': 0.05}) # 箭头属性 plt.show() ``` 此部分介绍了怎样运用 `annotate()` 对象为指定的数据点附加描述性信息,并通过调整参数来自由设计外观形式[^2]。 #### 文件读取与绘图实践案例 对于实际应用场景而言,经常需要从外部源获取数据并绘制相应的曲线图或其他类型的图表。下面给出一段简单的例子,展示如何基于给定路径下的 CSV 文件内容构建折线图,并适当修饰横坐标的呈现角度以便更好地阅读标签文字。 ```python import pandas as pd from pathlib import Path def plot_category_counts(file_path): df = pd.read_csv(Path(file_path)) counts_by_secondary_class = df.groupby(['secondary_class']).size() fig, ax = plt.subplots(figsize=(8, 6)) ax.plot(counts_by_secondary_class.index, counts_by_secondary_class.values, linestyle='-.', color="blue", label="类别数量") # 将X轴标签旋转90度以适应较长的文字串 plt.xticks(rotation=90) plt.legend(loc='best') plt.tight_layout() # 自动优化子图间距防止重叠 plt.show() plot_category_counts('./example.csv') # 假设 example.csv 存在于当前目录下 ``` 这段脚本首先导入必要的库,接着定义了一个名为 `plot_category_counts` 的函数用于接收文件名作为输入参数;内部逻辑涉及加载CSV文档、分组计数操作之后再调用 Matplotlib API 绘制趋势变化轨迹图谱,最后对 X 轴进行了特殊处理使得输出更加美观易懂[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值