3

我对情节中的传说有疑问。

import pandas as pd
import numpy as np
from pandas.api.types import CategoricalDtype
from plotnine import *
from plotnine.data import mpg
%matplotlib inline


c= pd.read_excel("cenpv.xlsx")
c.head()


dodge_text = position_dodge(width=0.9)

(ggplot(c, aes(x='exon', y='mean'))
 + geom_bar(stat='identity', position='dodge', show_legend=False)
 + geom_text(aes(label='percentage'),                                   
             position=dodge_text,
             size=8, va='bottom', format_string='{}%')
 + geom_hline(aes(yintercept = "Overall mean", color="Overall mean")))

我预计该图例将只有一条带有标签整体平均值的黄线。有可能改变它吗?

情节在情节九

4

1 回答 1

2

我们制作一些看起来像您的数据的东西:

c = pd.DataFrame({'exon':['CENPV_'+str(i+1) for i in range(5)],
                 'mean':np.random.poisson(100,5),
                 'percentage':np.random.randint(low=10,high=100,size=5)})
c['Overall mean'] = c['mean'].mean()

您有overall mean一个列,因此 ggplot2 (或 plotnine )将其解释为一系列连续值以绘制颜色。

您需要做的是将平均值作为数组提供,将颜色作为列表提供:

dodge_text = position_dodge(width=0.9)

(ggplot(c, aes(x='exon', y='mean'))
 + geom_bar(stat='identity', position='dodge', show_legend=False)
 + geom_text(aes(label='percentage'),                                   
             position=dodge_text,
             size=8, va='bottom', format_string='{}%')
 + geom_hline(aes(yintercept = c['mean'].mean(), color=["Overall mean"]))
 + scale_color_manual(values="yellow",name=' ')
)

在此处输入图像描述

于 2020-01-15T09:51:28.807 回答