使用geom_boxplot()函數,只需要將兩組變量映射到填充顏色(fill);
使用position=position_dodge(width)控制箱形之間間隔;
使用geom_jitter()函數添加抖動散點圖;
通過position=position_jitter(width,heigth)使散點沿著箱形中心線分布;
雙數據系列小提琴圖,只需要保留兩個小提琴圖的一半;
使得左邊為一個數據的核密度估計曲線圖;
右邊為另一個數據的核密度估計曲線圖;
繪製多數據系列箱形圖tips = sns.load_dataset('tips') #從網絡環境導入數據tips
https://www.cnblogs.com/zzhzhao/p/5269217.html
import pandas as pd
data_url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv" #填寫url讀取
df = pd.read_csv(data_url)
多數據系列的箱型圖import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from plotnine import *
#tips = sns.load_dataset("tips")
#tips = pd.read_csv('d:/python/out/seaborn-data/tips.csv')
tips = pd.read_csv('tips.csv')
#多數據系列的箱型圖
box2_plot=(ggplot(tips, aes(x = "day", y = "total_bill"))
+ geom_boxplot(aes(fill="sex"),position = position_dodge(0.8),size=0.5)
+ guides(fill=guide_legend(title="Gender"))
+scale_fill_hue(s = 0.90, l = 0.65, h=0.0417,color_space='husl')
+theme_matplotlib()
+theme(legend_position='right',
text=element_text(size=12,colour = "black"),
aspect_ratio =1.01,
dpi=100,
figure_size=(4,4)))
print(box2_plot)
box2_plot.save("box2_plot.pdf")
帶抖動散點的多數據系列箱型圖import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from plotnine import *
#tips = sns.load_dataset("tips")
#tips.to_csv('tips.csv', index=False, header=True)
tips = pd.read_csv('d:/python/out/seaborn-data/tips.csv')
#帶抖動散點的多數據系列箱型圖.
x_label=['Thur','Fri', 'Sat', 'Sun']
tips['x1']=pd.factorize(tips['day'],sort =x_label)[0]+1
tips['x2']= tips.apply(lambda x: x['x1']-0.2 if x['sex']=="Male" else x['x1']+0.2, axis=1)
box2_plot=(ggplot(tips, aes(x = "x1", y = "total_bill",group="x2",fill="sex"))
+ geom_boxplot(position = position_dodge(0.8),size=0.5,outlier_size=0.001)
+geom_jitter(aes(x = "x2"),position = position_jitter(width=0.15),shape = "o",size=2,stroke=0.1)
+ guides(fill=guide_legend(title="Gender"))
+scale_fill_hue(s = 0.90, l = 0.65, h=0.0417,color_space='husl')
+scale_x_continuous(breaks = range(1,len(x_label)+1),labels=x_label,name='day')
+xlab("day")
+theme_matplotlib()
+theme(legend_position='right',
text=element_text(size=12,colour = "black"),
aspect_ratio =1.01,
dpi=100,
figure_size=(4,4)))
print(box2_plot)
box2_plot.save("box2_plot2.pdf")
帶抖動散點的多數據系列小提琴圖import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from plotnine import *
#tips = sns.load_dataset("tips")
#tips.to_csv('tips.csv', index=False, header=True)
tips = pd.read_csv('d:/python/out/seaborn-data/tips.csv')
#帶抖動散點的多數據系列小提琴圖
sns.set_style("ticks")
fig = plt.figure(figsize=(5,5.5))
violinplot=sns.violinplot(x="day", y="total_bill", hue="sex",
data=tips, inner="quartile", split=True,
linewidth=1,colors=["#F7746A", "#36ACAE"])
violinplot.despine(left=True)
plt.legend(loc="center right",
bbox_to_anchor=(1.5, 0, 0, 1))
violinplot.set_axis_labels("day", "total bill")
#inner:控制violinplot內部數據點的表示,
#有「box」, 「quartile」, 「point」, 「stick」四種方式。
fig.savefig('violinplot_split2.pdf')
多數據系列的豆狀圖import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from plotnine import *
#tips = sns.load_dataset("tips")
tips = pd.read_csv('d:/python/out/seaborn-data/tips.csv')
#多數據系列的豆狀圖
#flatui = ["#F7746A", "#36ACAE", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
#sns.set_palette(sns.hls_palette(2, s = 0.95, l = 0.5, h=0.0417))
sns.set_context("notebook", font_scale=1.5,
rc={'font.size': 12, 'axes.labelsize': 20, 'legend.fontsize':15,
'xtick.labelsize': 15,'ytick.labelsize': 15})
fig = plt.figure(figsize=(5,5.5))
violinplot=sns.violinplot(x="day", y="total_bill", hue="sex",
data=tips, inner="box", split=True,
linewidth=1,palette=["#F7746A", "#36ACAE"])
plt.legend(loc="center right",
bbox_to_anchor=(1.5, 0, 0, 1))
plt.savefig('violinplot_split.pdf')