Python Matplotlib和Pandas更改负值的颜色
我想将条形图负值的颜色设置为“深蓝”,而将正值设置为“深红色”。实现这一目标的最佳方式是什么?我的csv文件的X值是纬度点,Y值是温度异常。我的x轴似乎也有问题,如我的链接图所示。它为-90到90之间的每个纬度点绘制刻度,这导致了很多重叠。我希望以15为增量,但我不知道如何做到这一点 编辑:已解决Python Matplotlib和Pandas更改负值的颜色,python,pandas,csv,matplotlib,bar-chart,Python,Pandas,Csv,Matplotlib,Bar Chart,我想将条形图负值的颜色设置为“深蓝”,而将正值设置为“深红色”。实现这一目标的最佳方式是什么?我的csv文件的X值是纬度点,Y值是温度异常。我的x轴似乎也有问题,如我的链接图所示。它为-90到90之间的每个纬度点绘制刻度,这导致了很多重叠。我希望以15为增量,但我不知道如何做到这一点 编辑:已解决 将熊猫作为pd导入 将matplotlib.pyplot作为plt导入 从matplotlib.pyplot导入图 将numpy作为np导入 filename=“2015_tAnoms.csv” d
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
从matplotlib.pyplot导入图
将numpy作为np导入
filename=“2015_tAnoms.csv”
df=pd.read_csv(文件名,分隔符=',',标题='infer')
图(num=None,figsize=(8,6),dpi=300,facecolor='w',edgecolor='k')
ax=plt.gca()
ax.set_facecolor((0,0,0))
ax.set_ylim([-1,3])
ax.grid(color='lightgray',alpha=0.6,其中='major',axis='y',linestyle='-'))
plt.bar(df['Latitude',df['TempAnom',color=np.where(df['TempAnom']<0,'deepskyblue','crimson'))
利润率(x=0)
ax.xaxis.set_ticks(np.arange(-90,91,15))
plt.xlabel(“纬度”)
plt.ylabel(“温度异常(°C)”)
plt.标题(“2015年按纬度带划分的温度异常”)
根据df['TempAnom']<0
条件,您可以将颜色传递为具有不同颜色的系列:
plt.bar(
df['Latitude'], df['TempAnom'],
color=np.where(df['TempAnom'] < 0, 'deepskyblue', 'crimson'),
)
ax.xaxis.set_ticks(np.arange(-90, 91, 15))
plt.bar(
df[‘纬度’],df[‘天坛’],
颜色=np.其中(df['TempAnom']<0,'deepskyblue','crimson'),
)
ax.xaxis.set_ticks(np.arange(-90,91,15))
输出:
太好了,这很有效。你知道如何增加x轴,使其不绘制从-90到90的每个纬度点吗?我希望增加15。您可能可以将
xticks
参数添加到df.plot.bar
:df.plot.bar(…,xticks=np.arange(-90,90,15))
@ChrisTurnbull。这可以修复标签,但现在值从0开始@perl@ChrisTurnbull对,这是条形图,所以有点不同。。。试试广亨建议的ax.xaxis.set\u major\u定位器(mpl.ticker.multiplelotator(15))
plt.bar(
df['Latitude'], df['TempAnom'],
color=np.where(df['TempAnom'] < 0, 'deepskyblue', 'crimson'),
)
ax.xaxis.set_ticks(np.arange(-90, 91, 15))