Python matplotlib:如何在 plt plot markerfacecolor 中包含一个自定义的颜色列表。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python matplotlib:如何在 plt plot markerfacecolor 中包含一个自定义的颜色列表。相关的知识,希望对你有一定的参考价值。
我想这是一个很简单的问题,但我不知道怎么做。
我有一个颜色列表,我想把它添加到plt.plot的markerfacecolor中。
颜色=['#003f5c','#444e86','#955196','#dd5182','#ff6e54','#ffa600']。
现在为了处理这个颜色列表,在我的图的其他图中我做了。
seaborn stripplot : palette=sns.color_palette( colors)
matplotlib hlines : colors=colors
但我试图在plt.plot.plot的markerfacecolor中包含我的 "颜色 "列表,似乎都失败了。
有什么办法吗?
# create rank
ranks = merged_df.groupby("region")["Value"].mean().fillna(0).sort_values(ascending=True)[::1].index
# for the hlines later
range_plot = range(0,len(ranks))
#Create figure
plt.figure(figsize = (10,7))
# define colors https://learnui.design/tools/data-color-picker.html#palette
colors= ['#003f5c','#444e86','#955196','#dd5182','#ff6e54','#ffa600']
sns.set_palette(sns.color_palette(colors))
sns.set_context("paper")
# Set the font to be serif, rather than sans
sns.set(font='serif')
# Make the background white, and specify the
# specific font family
sns.set_style("white", {
"font.family": "serif",
"font.serif": ["Times", "Palatino", "serif"]})
#Create stripplot
ax = sns.stripplot(x='Value',
y='region',
data=merged_df,
palette=sns.color_palette(colors),
size=6,
linewidth=0.4,
alpha=.15,
zorder=1,
order = ranks)
#Create Conditional means
ax = plt.plot(merged_df.groupby("region")["Value"].mean().fillna(0).sort_values(ascending=True),
range_plot,
"o",
markersize=18,
markerfacecolor=colors,
markeredgewidth=0.5,
markeredgecolor='grey',
zorder=3)
# add median line
ax = plt.axvline(merged_df.Value.mean(),
color='grey',
linestyle='dashed',
linewidth=1,
zorder=0)
plt.text(x=merged_df.Value.mean()+1,
y=-0.1,
s= 'Worldwide average: {number:.{digits}f}'.format(number=merged_df.Value.mean(),digits=0))
# Add category line
mean = merged_df.Value.mean()
x_arr = merged_df.groupby("region")["Value"].mean().fillna(0).sort_values(ascending=True)
plt.hlines(y=range_plot,
xmin=mean,
xmax=x_arr,
colors=colors,
linewidth=3,
zorder=3)
# Add the title
plt.text(x= -6.5,
y= -0.75,
s = '{}'.format(merged_df.Indicator.iloc[0]),
fontsize = 22)
# We change the aspect of ticks label and labels
plt.tick_params(axis='both', which='major', labelsize=15)
plt.tick_params(axis='both', which='minor', labelsize=15)
plt.xlabel('Student to teacher ratio',fontsize=15)
plt.ylabel('')
# Add the source
plt.text(x= merged_df.Value.max()-25,
y= 6.4,
s = 'Data: UNESCO institute for statistics',fontsize = 12, color = 'grey')
plt.tight_layout()
plt.savefig("UNESCO.jpeg", transparent=True, dpi=300)
按照Paul的建议,我用plt.scatter替换了plt.plot.plot,并且能够根据需要改变标记的美感。
以上是关于Python matplotlib:如何在 plt plot markerfacecolor 中包含一个自定义的颜色列表。的主要内容,如果未能解决你的问题,请参考以下文章
Python matplotlib:如何在 plt plot markerfacecolor 中包含一个自定义的颜色列表。
如何解决 import matplotlib.pyplot as plt 错误?
为啥很多例子在 Matplotlib/pyplot/python 中使用 `fig, ax = plt.subplots()`