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中包含我的 "颜色 "列表,似乎都失败了。

有什么办法吗?

enter image description here

# 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,并且能够根据需要改变标记的美感。enter image description here

以上是关于Python matplotlib:如何在 plt plot markerfacecolor 中包含一个自定义的颜色列表。的主要内容,如果未能解决你的问题,请参考以下文章

Python matplotlib:如何在 plt plot markerfacecolor 中包含一个自定义的颜色列表。

如何解决 import matplotlib.pyplot as plt 错误?

《Python数据分析实战》7 matplotlib

如何使用python的matplotlib画正弦函数图像

Matplotlib库(简介)

为啥很多例子在 Matplotlib/pyplot/python 中使用 `fig, ax = plt.subplots()`