Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib和Pandas更改负值的颜色_Python_Pandas_Csv_Matplotlib_Bar Chart - Fatal编程技术网

Python Matplotlib和Pandas更改负值的颜色

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

我想将条形图负值的颜色设置为“深蓝”,而将正值设置为“深红色”。实现这一目标的最佳方式是什么?我的csv文件的X值是纬度点,Y值是温度异常。我的x轴似乎也有问题,如我的链接图所示。它为-90到90之间的每个纬度点绘制刻度,这导致了很多重叠。我希望以15为增量,但我不知道如何做到这一点

编辑:已解决

将熊猫作为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))