gpt4 book ai didi

python - Pyplot errorbar 无法传递颜色数组

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:45 25 4
gpt4 key购买 nike

我正在尝试更改使用 plt.errorbar 创建的图表的外观,但我无法按照我想要的方式更改它。

为了演示这个问题,我制作了一些示例数据:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import matplotlib.axes as axes
import numpy as np
Temps=np.array([18000,15000,14000,12000,11750,11500,10000,5750,6000])
Powers=np.array([1.2,1.0,0.5,.35,0.4,0.2,.15,5.3,4.9])
Errors=100*np.array([2,2,2,2,2,2,2,3,3])

我有一个将温度值转换为颜色的函数:

def makecolour(t):
a=(t-min(Temps))/(max(Temps)-min(Temps))
return [[1-A,0,A] for A in a]

我还更改了图表的一些其他属性。

plt.axes(facecolor='black')
plt.yscale('log')
plt.xscale('log')
plt.xlim(2e4,5e3)

plt.errorbar(Temps,Powers,xerr=Errors,ecolor=makecolour(Temps),fmt='.')

我无法让数据点改变颜色,只能改变误差线。当我尝试更改实际点的颜色时:

plt.errorbar(Temps,Powers,xerr=Errors,ecolor=makecolour(Temps),fmt='.',color=makecolour(Temps))
"Breaks because it fails to interpret the array of colours."

它不起作用,我不知道如何修复它。我最接近的解决方案是完全隐藏数据点:

plt.errorbar(Temps,Powers,xerr=Errors,ecolor=makecolour(Temps),fmt='.',markersize=0)
"Not showing where the data point is isn't acceptable."`

但这还不够好。

我也一直在努力解决使用plt.xscale('log')时轴刻度的显示方式。理想情况下,我想将刻度标签显示为普通整数而不是科学记数法,但我尝试过的解决方案都不起作用。我尝试过:

ticker.LogFormatter(base=1)
axes.ticklabel_format(style='plain')

我在这里搜索了以前的答案,但没有发现任何与 plt.errorbar 类似问题的讨论。任何帮助将不胜感激。

最佳答案

这是部分答案。只是第一个没有标记的图,并且在没有错误线的同一个图上。

关于股票代码,this post建议:

ax=plt.gca()
ax.xaxis.set_minor_formatter(ticker.ScalarFormatter())
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())

演示代码:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import matplotlib.axes as axes
import numpy as np

Temps=np.array([18000,15000,14000,12000,11750,11500,10000,5750,6000])
Powers=np.array([1.2,1.0,0.5,.35,0.4,0.2,.15,5.3,4.9])
Errors=100*np.array([2,2,2,2,2,2,2,3,3])

def makecolour(t):
a=(t-min(Temps))/(max(Temps)-min(Temps))
return [[1-A,0,A] for A in a]

plt.axes(facecolor='black')
plt.yscale('log')
plt.xscale('log')
plt.xlim(2e4,5e3)

ax=plt.gca()
ax.xaxis.set_minor_formatter(ticker.ScalarFormatter())
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())

plt.errorbar(Temps,Powers,xerr=Errors,ecolor=makecolour(Temps),fmt='.',markersize=0)
plt.errorbar(Temps,Powers,xerr=None,fmt='.')

plt.show()

resulting plot

关于python - Pyplot errorbar 无法传递颜色数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com