问题描述
我有一个可用的 R 代码,它使用来自自定义函数的数据生成箱线图。 我试图将它转换为 Python plotnine,但我无法让它工作并绘制图形。 你能帮我弄清楚吗?
代码粘贴在下面... 非常感谢!!!打呼噜
import numpy as np
import pandas as pd
from scipy import stats as st
import plotnine as pn
file_path = r'C:\Users\snirh\OneDrive\Desktop\KarnieliR'
geb_data= pd.read_csv(file_path + r'\Master_Data_File.csv')
# R stat function that mtache produce the desiered data for the Box plot
#min.mean.se.max <- function(x) {
# r <- c(mean(x) - SE(x)*1.96,mean(x) - SE(x),mean(x),mean(x) + SE(x),mean(x) + SE(x)*1.96)
# names(r) <- c("ymin","lower","middle","upper","ymax")
# r
#}
#my translation of the R code above to python
def mean_sem_ci(data):
middle= np.mean(data)
my_sem= st.sem(data)
ymin= middle- my_sem*1.96
lower= middle - my_sem
upper= middle + my_sem
ymax= middle + my_sem*1.96
#result_dict = {'middle':middle,'upper': upper,'lower': lower,'ymax': ymax,'ymin': ymin} #output format option 1
#result_df = pd.Series([ymin,lower,middle,upper,ymax],index= ['ymin','lower','middle','upper','ymax']) #output format option 2
#result_df2= pd.DataFrame(result_dict,columns= ['ymin','ymax']) #output format option 3
result_arr= np.array([(ymin,ymax)],dtype=[('ymin',float),('lower',('middle',('upper',('ymax',float)]) #output format option 4
return result_arr
# ggplot2 code for Box plots from R that use the data from the R function above
#p1 <- ggplot(aes(y = GG,x = factor(Temporal_scale,levels = c('Small','Medium','Large','Extra Large'))),data = geb_data)
#p1 <- p1 + stat_summary(fun.data = min.mean.se.max,geom = "Boxplot",position = "dodge",width=rel(0.5),color="grey 25") +
#ggtitle("fig 3 temporal scales") +
# xlab("Spatial Scale") +
#ylab("Heterogenity Magnitude")+
#coord_cartesian(
# xlim = NULL,# ylim = c(-0.6,0.6),# expand = TRUE,# default = FALSE,# clip = "on"
#)+
# theme(panel.background = element_rect(fill = 'white',colour = 'black'),panel.grid=element_line(NA))
#p1
# my attempt to convert the R code above to python using plotnine to generate the same Boxplot
fig1= (pn.ggplot( data = geb_data,mapping= pn.aes(y = 'GG',x = 'Temporal scale')) +
pn.stats.stat_summary(na_rm = True,fun_data = mean_sem_ci,geom = 'Boxplot',position = 'dodge',width = 0.5,color = 'oarnge')+
pn.labels.xlab('Spatial Scale')+
pn.labels.xlab('Heterogeneity Magnitude')+
pn.coords.coord_cartesian(ylim= (-0.6,0.6))+
pn.themes.theme_seaborn(style= 'whitegrid',context= 'paper',font_scale=2))
fig1
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)