ValueError: 'c' argument must be a color, a sequence of colors, or a sequence of numbers
ValueError: 'c' argument must be a color, a sequence of colors, or a sequence of numbers
homicide_scatter_df.plot.scatter(x='Homicide',y='Area Name',s = 225,
c = 'Population/mil', colormap='viridis',
sharex=False)
上面的代码有效,我得到了我的散点图,其中的点根据区域人口改变颜色。
fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = homicide_scatter_df['Homicide'],
y = homicide_scatter_df['Area Name'],
s = 225,
c = 'Population/mil', colormap='viridis',
sharex=False)
但是,上面的代码会抛出关于 c
:
的错误
ValueError: 'c' argument must be a color, a sequence of colors, or a sequence of numbers, not Population/mil
更新:修复列问题后,颜色条仍然存在问题。
在 pandas 图表的右侧,我得到一个带有标签“Population/mil”的颜色范围条。 matplotlib 版本不呈现具有一系列颜色的相同颜色条。是否可以使用第二种方法获得相同的颜色条?
更新:我现在有了颜色条,但颜色的顺序与数据相反。
norm = colors.Normalize(homicide_scatter_df['Population/mil'].max(), homicide_scatter_df['Population/mil'].min())
plt.xticks(rotation=90)
fig.colorbar(cm.ScalarMappable(norm=norm,cmap='YlGnBu'), ax=ax)
以上代码在正确的位置和正确的值显示了栏。但是,颜色与点颜色的顺序相反。
如何更改颜色以正确上升?
在 pandas 图中,c='Population/mil'
有效,因为 pandas 已经知道这是 homicide_scatter_df
.
的一列
在 matplotlib 图中,您需要像对 x
和 y
:
那样传递整列
ax.scatter(x=homicide_scatter_df['Homicide'],
y=homicide_scatter_df['Area Name'],
c=homicide_scatter_df['Population/mil'], # actual column, not column name
s=225, colormap='viridis', sharex=False)
或者如果您指定 data
来源,那么您可以只传递类似于 pandas:
的列名
data
: If given, parameters can also accept a string s
interpreted as data[s]
.
另外,matplotlib 中的颜色映射处理也不同。将 colormap
更改为 cmap
并手动调用 colorbar
:
ax.scatter(data=homicide_scatter_df, # define data source
x='Homicide', # column names
y='Area Name',
c='Population/mil',
cmap='viridis', # colormap -> cmap
s=225, sharex=False)
plt.colorbar(label='Population/mil') # manually add colorbar
homicide_scatter_df.plot.scatter(x='Homicide',y='Area Name',s = 225,
c = 'Population/mil', colormap='viridis',
sharex=False)
上面的代码有效,我得到了我的散点图,其中的点根据区域人口改变颜色。
fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = homicide_scatter_df['Homicide'],
y = homicide_scatter_df['Area Name'],
s = 225,
c = 'Population/mil', colormap='viridis',
sharex=False)
但是,上面的代码会抛出关于 c
:
ValueError: 'c' argument must be a color, a sequence of colors, or a sequence of numbers, not Population/mil
更新:修复列问题后,颜色条仍然存在问题。
在 pandas 图表的右侧,我得到一个带有标签“Population/mil”的颜色范围条。 matplotlib 版本不呈现具有一系列颜色的相同颜色条。是否可以使用第二种方法获得相同的颜色条?
更新:我现在有了颜色条,但颜色的顺序与数据相反。
norm = colors.Normalize(homicide_scatter_df['Population/mil'].max(), homicide_scatter_df['Population/mil'].min())
plt.xticks(rotation=90)
fig.colorbar(cm.ScalarMappable(norm=norm,cmap='YlGnBu'), ax=ax)
以上代码在正确的位置和正确的值显示了栏。但是,颜色与点颜色的顺序相反。
如何更改颜色以正确上升?
在 pandas 图中,c='Population/mil'
有效,因为 pandas 已经知道这是 homicide_scatter_df
.
在 matplotlib 图中,您需要像对 x
和 y
:
ax.scatter(x=homicide_scatter_df['Homicide'],
y=homicide_scatter_df['Area Name'],
c=homicide_scatter_df['Population/mil'], # actual column, not column name
s=225, colormap='viridis', sharex=False)
或者如果您指定 data
来源,那么您可以只传递类似于 pandas:
data
: If given, parameters can also accept a strings
interpreted asdata[s]
.
另外,matplotlib 中的颜色映射处理也不同。将 colormap
更改为 cmap
并手动调用 colorbar
:
ax.scatter(data=homicide_scatter_df, # define data source
x='Homicide', # column names
y='Area Name',
c='Population/mil',
cmap='viridis', # colormap -> cmap
s=225, sharex=False)
plt.colorbar(label='Population/mil') # manually add colorbar