暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

直方图叠加密度图:stata、R与Python的对比

1641
点击关注了解更多哦

本文主要展示如何绘制带有密度图的直方图。以stata自带的auto数据集为例,分别使用StataR语言Python绘制该数据集中的price变量的直方图与密度图。

1、Stata

clear
sysuse auto
kdensity price
graph save plot1.gph, replace
histogram price
graph save plot2.gph, replace
graph combine plot1.gph plot2.gph

2种方法进行图形叠加

histogram price,bin(10) kdensity //方法1
histogram price,bin(10) addplot(kdensity price) //方法2

2、R语言

数据可从stata软件中直接导出,或在后台回复【20220911】获取。

#加载package
library(ggplot2)
library(haven)
library(ggthemes)
auto <- haven::read_dta("auto.dta"#read data

#绘图
ggplot(auto, aes(price)) + 
  geom_histogram(aes(y = ..density..),  bins = 10, color = "black", fill = "white") + 
  geom_density(fill = "blue", alpha = 0.2) + 
  scale_y_continuous(expand = c(0,0), labels = ~format(.x, scientific = FALSE)) + 
  scale_x_continuous(breaks = seq(2000, 18000, 2000)) + 
  theme_clean() + 
  labs(x = "Price", y = "Density") + 
  theme(axis.text = element_text(size = 13), 
        axis.title = element_text(size = 15))

使用theme_stata() 主题,绘制stata风格。

3、Python

将数据放置在jupyter启动的目录下。

#加载相关库
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
auto = pd.io.stata.read_stata("auto.dta"#read data
auto.head()

方法1

#绘图
sns.set_theme(style="ticks", font = "Times New Roman", font_scale=1.2)
#sns.set_theme()
plt.figure(figsize=(10,5))
sns.distplot(auto["price"], kde = True, rug = False, bins = 10, hist = True, vertical = False ,
            hist_kws = {"color":"r"}, kde_kws = {'linestyle':'--',"shade":True, "color":"blue""alpha":0.1});
plt.savefig("密度图与直方图.pdf")

方法2

plt.figure(figsize=(10,5))
sns.histplot(data=auto, x="price", kde=True,alpha = 0.3, stat="density");
plt.savefig("密度图与直方图2.pdf")

4、其他

其他绘图方法可进一步阅读公众号其他文章。


如有帮助请多多点赞哦!


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论