python种颜色循环_如何在循环中获得两条线以相同的颜色绘制? - python

我想生成一个图形,该图形显示同一图形上各种收敛方法/值的数值函数的误差。

我使用while循环来增加收敛条件的不同值,并在图形上绘制误差,每种收敛方法一次(用后缀A和B标记)。

问题是,每次我在matplotlib中调用plot时,该行都会显示为不同的颜色。我希望为每个会聚值使用相同的颜色(即,如果它们共享一个会聚值,则将它们绘制为相同的颜色),以使读者更容易看到连接的线。

a21ym.png

我的代码当前产生的示例。

我希望每对中的彩色和黑色虚线是相同的颜色。我没有包括函数的定义,但是我用来生成图形的代码是

conv = 1e-0

h=0.1

while conv>1e-4:

errorlist_A, errorlist_B = [],[]

gridsize = []

grid_x = 40

while grid_x <= 100:

analytical = (np.ones((grid_x,grid_x)))*edge_val

P = np.zeros((grid_x,grid_x))

gridsize.append(grid_x)

solA = solvelap_avg_rand(grid_x,grid_x,edge_val,P,h,conv)

solB = solvelap_max_rand(grid_x,grid_x,edge_val,P,h,conv)

errorlist_A.append(errorfunc(grid_x,grid_y,analytical,solA,edge_val))

errorlist_B.append(errorfunc(grid_x,grid_y,analytical,solB,edge_val))

grid_x +=5

print(grid_x)

plt.plot(gridsize,errorlist_A, label = "{0:.1g}".format(conv))

plt.plot(gridsize,errorlist_B, label = "{0:.1g}".format(conv) , linestyle = "--", color = "k")

conv *=0.1

plt.title("Fig:6 Error per Node Vs. Grid Width")

plt.xlabel("Grid Width")

plt.ylabel("Average Error Per Node (Log10)")

plt.yscale("log")

plt.legend()

plt.show()

注意:我知道您可以手动设置线条的颜色作为参数,但是我不确定如何循环执行。

此外,如果有任何方法可以防止图例阻止剧情,那也将非常有帮助。

参考方案

我会使用颜色图自动定义颜色。但是,由于您事先不知道会有多少条曲线,因此我们可以绘制所有曲线并在之后为它们上色。

修改代码中的以下几行:

# Remove the `color=` parameter here, it will be overwritten anyway.

plt.plot(gridsize, errorlist_A, label="{0:.1g}".format(conv))

plt.plot(gridsize, errorlist_B, label="{0:.1g}".format(conv), linestyle = "--")

然后在plt.show()之前添加这些内容:

# After you plotted them, apply a random color to each curve.

import matplotlib.cm as cm

colormap = cm.get_cmap("plasma") # The various colormaps can be found here: https://matplotlib.org/3.1.0/tutorials/colors/colormaps.html

ax = plt.gca()

lines = ax.lines

N = len(lines)

for n in range(0, N, 2): # For each two-lines made via `plt.plot(...)`:

random_color = colormap(n/N) # This function takes a number between 0 and 1 and returns a color.

lines[n].set_color(random_color)

lines[n+1].set_color(random_color)

4NMeW.png

Python-crontab模块 - python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…Python Pandas导出数据 - python

我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…Python:在不更改段落顺序的情况下在文件的每个段落中反向单词? - python

我想通过反转text_in.txt文件中的单词来生成text_out.txt文件,如下所示:text_in.txt具有两段,如下所示:Hello world, I am Here. I am eighteen years old. text_out.txt应该是这样的:Here. am I world, Hello old. years eighteen a…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python绘制多条ROC曲线的方法如下: 1. 导入所需的库:`import matplotlib.pyplot as plt` 2. 准备数据:获取多个分类器的真正率(True Positive Rate, TPR)和假正率(False Positive Rate, FPR)曲线数据,这些数据可以通过调用分类器的评估函数获得。 3. 创建图像和子图对象:`fig, ax = plt.subplots()` 4. 循环绘制曲线:使用`ax.plot()`函数,一次绘制每个分类器的ROC曲线,传入分类器的TPR和FPR数据作为参数。 5. 添加标题和标签:使用`ax.set()`函数,设置图像的标题、X轴和Y轴的标签。 6. 设置图例:如果需要,使用`ax.legend()`函数,设置图例以显示每个分类器的标识。 7. 显示图像:使用`plt.show()`函数,显示绘制好的ROC曲线图像。 下面是一个简单的示例代码,其包含了绘制两条ROC曲线的基本步骤: ```python import matplotlib.pyplot as plt # 准备数据 classifier_1_tpr = [0.1, 0.2, 0.4, 0.6, 0.8] # 分类器1的TPR数据 classifier_1_fpr = [0.2, 0.3, 0.5, 0.7, 0.9] # 分类器1的FPR数据 classifier_2_tpr = [0.2, 0.3, 0.5, 0.7, 0.9] # 分类器2的TPR数据 classifier_2_fpr = [0.1, 0.2, 0.4, 0.6, 0.8] # 分类器2的FPR数据 # 创建图像和子图对象 fig, ax = plt.subplots() # 绘制曲线 ax.plot(classifier_1_fpr, classifier_1_tpr, label='Classifier 1') ax.plot(classifier_2_fpr, classifier_2_tpr, label='Classifier 2') # 添加标题和标签 ax.set(title='ROC Curve', xlabel='False Positive Rate', ylabel='True Positive Rate') # 设置图例 ax.legend() # 显示图像 plt.show() ``` 以上代码,我们首先准备了两个分类器的TPR和FPR数据,然后使用`ax.plot()`函数绘制了两条ROC曲线,接着用`ax.set()`函数设置了标题和标签,最后使用`ax.legend()`函数设置了图例,最终使用`plt.show()`函数显示了绘制好的ROC曲线图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值