matplotlib 画图,实现多个曲线颜色分别控制

本文介绍了如何在matplotlib中画图时实现多个曲线的颜色分别控制,通过Qtdesigner设置QSS来匹配曲线和按钮颜色,并详细解释了plot()函数中color参数的使用方法,特别是在有多个曲线显示时如何动态指定颜色。

matplotlib 画图,实现多个曲线颜色控制

由于需要设置曲线的颜色和控制按钮的颜色一致。完成之后,自己学习记录如下
在这里插入图片描述

准备1 在Qtdesigner 中设置QSS

选择需要编辑的按键,右键-> 编辑样式表,如下所示。选择添加颜色,随机设置值如下。

QT

准备2 matplotlib中画图,使用plot() 函数

使用plot() 函数在pyqt5 中画图参考QT5

polt() 函数中,可以添加color 参数设置,

import numpy as np
import matplotlib.pyplot as plt
y = np.arange(1, 3, 0.3)
plt.plot(y, color = 'red')
plt.show()

显示的red曲线如图所示

正文部分

在有多个曲线同时显示在一个figure,且需要控制每一个曲线的颜色和控制其开关的按钮颜色一致时,
就需要设置其颜色

在上面的编辑样式表中,可以看到起颜色的RGB值
在plot() 画图中,为了将其对应过来, 可以做如下参数转换的设置,上面的数据是[255,168,85] 现在是[255/255,156/255,85/255,1] ,末尾添加一个1,这个地方我添加了8 个不同的颜色,

ALL_Color = [[1, 0, 0, 1], [0, 252 / 255, 0, 1], [0, 0, 1, 1], [46 / 255, 217 / 255, 1, 1],
                      [1, 156 / 255, 85 / 255, 1 / 255], [1, 51 / 255, 129 / 255, 1], [186 / 255, 12 / 255, 1, 1],
                      [0, 0, 0, 1]] 

颜色控制

在plot() 函数中,color 每次只接受一个颜色的参数,思路如下,

在这里插入图片描述假设有8 个颜色, 我现在有8 个数据曲线需要显示编号分别是channel = [0,1,2,…7]
现在需要显示 channel的[1,3,4,6] 曲线。那么我需要在plot(color = )的color参数设定对应的颜色
就是2个list,第一个提供值, 第二个list 有第一个list 的index,根据第二个的index,去第一个list 取值
在这里插入图片描述

代码部分

import numpy as np
import  time
import matplotlib.pyplot as plt
y = np.arange(1, 3, 0.3)
ALL_Color = [[1, 0, 0, 1], [0, 252 / 255, 0, 1], [0, 0, 1, 1], [46 / 255, 217 / 255, 1, 1],
             [1, 156 / 255, 85 / 255, 1], [1, 51 / 255, 129 / 255, 1],
              [186 / 255, 12 / 255, 1, 1],   [0, 0, 0, 1]]
# 需要显示4 个指定的颜色数据。
ch = [0,4,5,7]
chen = ch
# 选择
coloritem = [ALL_Color[i] for i in chen]
# 使用numpy随机生成数据
t = np.linspace(0, 10, 8000)
y= []
for i in range(1, 9):    
    y.append(np.sin(t * i + time.time()) * 100)
# 循环显示数据,
for i in range(len(ch)):
    plt.plot(t,y[i],color =coloritem[i] )
plt.show()

上面的代码运行如下,我选定了4 个曲线的颜色,在本来有8 个曲线数据中, 选择了 【0,4,5,7】这几个数据来做显示,然后一次循环生成显示。

在这里插入图片描述

<think>好的,用户现在问的是如何在Matplotlib中调整画布颜色。首先,我需要回想一下之前用户的问题,他们之前询问的是深色背景下的字体颜色搭配,现在转到了Matplotlib的画布颜色调整。这说明用户可能在进行数据可视化,希望优化图表的美观度,特别是在背景颜色方面。 接下来,我需要确定用户的具体需求。调整画布颜色可能涉及多个方面,比如整个图形的背景颜色(figure背景)、子图的背景颜色(axes背景)、网格线、坐标轴颜色等。用户可能希望整体改变图表的背景色,以适应不同的主题或提高可读性。 首先,我应该回忆Matplotlib中调整画布颜色的方法。通常,可以使用figure.set_facecolor()来设置整个画布的背景颜色,用axes.set_facecolor()来设置子图的背景颜色。此外,还可以调整坐标轴、标签、标题的颜色,以确保它们在深色背景下的可见性。 然后,考虑到用户之前的问题是关于颜色搭配的,可能需要提供一些配色建议。例如,如果用户选择深色背景,应该建议使用浅色的文字和线条颜色,反之亦然。同时,可能还需要提到如何保存图像时保留透明背景,或者如何应用样式表来快速切换主题。 还需要检查是否有常见的陷阱,比如设置了背景色但未调整其他元素的颜色,导致文字看不清。或者在使用保存功能时,背景色可能被覆盖,需要设置transparent参数为True。 另外,用户可能对代码示例有需求,所以应该提供具体的代码示例,展示如何一步步设置背景色和相关元素的颜色调整。同时,可以提到使用style库来应用预定义的样式,如‘dark_background’,这可能是一个快捷的方法。 最后,要确保回答结构清晰,分步骤说明,涵盖设置整个画布、子图背景、其他元素颜色调整、样式表使用以及保存时的注意事项。这样用户可以根据需要选择不同的方法,并理解每个步骤的作用。</think>在 **Matplotlib** 中调整画布(Figure)和子图(Axes)的背景颜色是常见的需求,尤其是需要适配不同主题(如暗黑模式)或提高图表可读性时。以下是具体方法和示例: --- ### **一、调整画布背景颜色** 通过 `figure.set_facecolor()` 设置**整个画布的背景颜色**: ```python import matplotlib.pyplot as plt # 创建画布 fig = plt.figure(figsize=(6, 4)) fig.set_facecolor("#001510") # 设置画布背景颜色(如深蓝绿) # 添加子图并绘图 ax = fig.add_subplot(111) ax.plot([1, 2, 3], [4, 5, 6], color="#7FFFD4") # 使用浅蓝绿曲线 plt.show() ``` --- ### **二、调整子图(Axes)背景颜色** 通过 `ax.set_facecolor()` 设置**子图区域的背景颜色**: ```python # 创建画布和子图 fig, ax = plt.subplots(figsize=(6, 4)) fig.set_facecolor("#062B3E") # 画布背景(深藏青蓝) ax.set_facecolor("#001510") # 子图背景(深蓝绿) # 调整坐标轴和标签颜色 ax.spines['bottom'].set_color("#E0E0E0") # 坐标轴颜色 ax.spines['top'].set_color("#E0E0E0") ax.spines['left'].set_color("#E0E0E0") ax.spines['right'].set_color("#E0E0E0") ax.xaxis.label.set_color("#E0E0E0") # X轴标签颜色 ax.yaxis.label.set_color("#E0E0E0") # Y轴标签颜色 ax.tick_params(axis='both', colors="#E0E0E0") # 刻度颜色 # 绘图 ax.plot([1, 2, 3], [4, 5, 6], color="#FFD700") # 使用金色曲线 plt.show() ``` --- ### **三、一键切换暗黑主题** Matplotlib 内置了 `dark_background` 样式,可快速切换为暗色画布: ```python plt.style.use('dark_background') # 应用暗黑主题 fig, ax = plt.subplots(figsize=(6, 4)) ax.plot([1, 2, 3], [4, 5, 6]) plt.show() ``` --- ### **四、自定义全局样式(推荐)** 通过 `rcParams` 统一配置颜色,避免重复设置: ```python plt.rcParams.update({ 'figure.facecolor': '#062B3E', # 画布背景 'axes.facecolor': '#001510', # 子图背景 'axes.edgecolor': '#E0E0E0', # 坐标轴颜色 'axes.labelcolor': '#E0E0E0', # 标签颜色 'xtick.color': '#E0E0E0', # X刻度颜色 'ytick.color': '#E0E0E0', # Y刻度颜色 'text.color': '#E0E0E0' # 文本颜色 }) fig, ax = plt.subplots(figsize=(6, 4)) ax.plot([1, 2, 3], [4, 5, 6], color="#FF6B6B") # 珊瑚粉曲线 ax.set_title("自定义暗色主题", color="#FFD700") # 金色标题 plt.show() ``` --- ### **五、保存透明背景** 导出图片时保留背景透明度(适用于叠加在其他设计稿中): ```python fig.savefig("plot.png", transparent=True) # 透明背景 ``` --- ### **六、注意事项** 1. **对比度**:深色背景需搭配浅色文字和线条(如 `#E0E0E0` 或 `#B0E0E6`)。 2. **主题一致性**:建议使用工具(如 [Coolors](https://coolors.co/))生成协调的配色方案。 3. **网格线调整**:若需显示网格,可设置浅色半透明: ```python ax.grid(True, color="#FFFFFF", alpha=0.2) ``` --- 通过以上方法,可以灵活控制 Matplotlib 的画布和子图颜色,适配不同场景需求 🌈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值