Ming's Blog

Happy coding

Seaborn统计可视化工具的使用

Ming posted @ 2014年5月27日 17:01 in Python , 16310 阅读

Seaborn是python中基于matplotlib的统计绘图模块。如果说matplotlib是“tries to make easy things easy and hard things possible”,那么seaborn则是让“hard things”也变简单。

 

安装

Seaborn需要python 2.7或者3.3+的环境。并且需要首先安装numpy、scipy、matplotlib和pandas模块,官网还推荐statsmodels和patsy两个模块。这些模块可以在相应官网下到,也可以在http://www.lfd.uci.edu/~gohlke/pythonlibs/网站下载(注意32/64位及对应python版本号)。

Seaborn需要在Github上下载源文件,然后在命令行运行python setup.py install即可安装到python的安装目录下。使用seaborn需要导入seaborn模块。

import seaborn as sns

以下示例均假设已经导入seaborn模块为sns。

 

绘图风格

Seaborn和matplotlib的区别在于,seaborn把绘图风格参数与数据参数分开设置。这样我们可以轻易的改变图像的风格。Seaborn有两组函数对风格进行控制:axes_style()/set_style()函数和plotting_context()/set_context()函数。axes_style()函数和plotting_context()函数返回参数字典,set_style()函数和set_context()函数设置matplotlib。

首先介绍第一组*_style()函数

Seaborn有5中预定义的主题:darkgrid(灰色背景+白网格), whitegrid(白色背景+黑网格), dark(仅灰色背景), white(仅白色背景)和ticks(坐标轴带刻度)。默认的主题是darkgrid,修改主题可以使用set_style()函数。

sns.set_style(‘white’)

建议在绘制大量数据元素时,使用whitegrid主题;如果想突出带有固定模式的数据时,建议不使用网格,即dark/white主题;在体现少量特殊的数据元素结构时,使用ticks主题。

如果不需要右方和上方的坐标轴,可以使用despine()函数去掉。注意,使用despine()函数需要在画数据元素之后使用,并且despine()函数只有在使用white或ticks主题时,才会有效果。另外,despine()函数可以选择哪些坐标轴被隐藏。

sns.despine(left=True, bottom=True, right=False, top=False)

offset_spines()可以使坐标轴移开一些,远离数据元素。

使用axes_style()可以方便的临时改变绘图主题。

with sns.axes_style(‘darkgrid’):

    plt.subplot(211)

    plt.plot(x,y)

如果希望改变默认绘图主题的风格,可以将字典作为参数rc传入*_style()函数中。也可以使用sns.set_style(‘darkgrid’rc)改变指定主题的风格参数。可以改变的风格参数列表可以通过sns.axes_style()的返回值得到。style的键值对列表的示例如下。

axes.labelcolor          .15
axes.grid                True
axes.axisbelow           True
axes.edgecolor           white
axes.linewidth           0
axes.facecolor           #EAEAF2
font.family              Arial
grid.color               white
grid.linestyle           -
image.cmap               Greys
legend.frameon           False
legend.scatterpoints     1
legend.numpoints         1
lines.solid_capstyle     round
pdf.fonttype             42
text.color               .15
xtick.color              .15
ytick.color              .15

xtick.direction          out
ytick.direction          out

xtick.major.size         0
ytick.major.size         0
xtick.minor.size         0
ytick.minor.size         0

下面介绍第二组*_context()函数

上下文(context)可以设置输出图片的大小尺寸(scale)。Seaborn中预定义的上下文有4种:paper、notebook、talk和poster。默认使用notebook上下文。

sns.set_context(‘paper’)

上例将上下文设置为paper,输出为最小的尺寸。

同样,plotting_context()函数也可以在with关键字后临时改变绘图风格,也可以传入字典参数,改变默认设置。

sns.set_context(‘notebook’,rc)

context键值对的示例列表如下。

axes.titlesize           12
axes.labelsize           11
figure.figsize           [ 8.   5.5]
grid.linewidth           1
lines.linewidth          1.75
legend.fontsize          10
lines.markeredgewidth    0
lines.markersize         7
patch.linewidth          0.3
xtick.labelsize          10
ytick.labelsize          10
xtick.major.pad          7
ytick.major.pad          7
xtick.major.width        1
ytick.major.width        1
xtick.minor.width        0.5
ytick.minor.width        0.5

两组绘图函数均可以通过set()函数控制参数。

 

配色

在介绍seaborn的配色使用之前,首先需要介绍seaborn的调色板(palette)功能。

通过sns.color_palette()函数设置或查看调色板(palette),函数返回值是rgb元组的列表。调用sns.palplot()画出palette的每种颜色。

sns.palplot(sns.color_palette())

上例会显示seaborn预定义六个palette颜色:pastel,bold,muted,deep,dark和colorblind。

color_palettes_7_0

另外可以通过color_pallete()设定palette的颜色。例如

sns.palplot(sns.color_palette(‘husl’,8))

color_palettes_9_0

显示husl颜色空间平均分布的8个颜色。又如

sns.palplot(sns.color_palette(‘hls’,8))

color_palettes_10_0

显示hls颜色空间平均分布的8个颜色。

还可以使用matplotlib中colormap的名字,例如

sns.palplot(sns.color_palette(‘coolwarm’,7))

color_palettes_12_0

显示冷暖色平均分布的7个颜色。

sns.palplot(sns.color_palette(‘RdPu_r’,8))

color_palettes_14_0

显示连续的平均分布的8个颜色。

sns.palplot(sns.color_palette(‘Set2’,10))

color_palettes_16_0

显示定性的10个颜色。

sns.palplot(sns.color_palette(["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]))

color_palettes_18_0

显示自定义的6个颜色。

palette可以大致被分为3类:离散的(diverging)、连续的(sequential)和定性的(qualitative)。离散的palette适用于表示数据有自然的、有实际意义的断点;而连续的palette适用于表示数据从低到高等的变化;定性的palette适用于分类的数据。

另外还有两个函数可以自定义paletteblend_palette()dark_palette()

dark_palette()是根据指定的颜色,自动调整其灰度产生多个颜色,这些灰度增量不是均等的。

sns.palplot(sns.dark_palette(‘MediumPurple’))

sns.palplot(sns.dark_palette(‘skyblue’,8,reverse=True))

color_palettes_20_0 color_palettes_22_0

 

dark_palette()函数默认返回颜色rgb列表,也可以返回colormap对象作为参数传给matplotlib函数。

pal = sns.dark_palette(‘palegreen’, as_cmap=True)

sns.kdeplot(sample, cmap=pal)

blend_palette()可以更加灵活的指定自己喜欢的颜色。

sns.palplot(sns.blend_palette([‘mediumseagreen’,‘ghostwhite’,‘#4168B7’], 9))

color_palettes_28_0

通过改变饱和度产生连续型palette使用desaturate()函数。

sns.palplot(sns.blend_palette([sns.desaturate(‘#009B76’,0),’#009B76’], 5))

在使用seaborn提供的绘图函数时,函数内部会调用调色板函数,因此只需将调色板字符串或*_palette()函数返回的对象传给color或者palette参数即可。

sns.tsplot(sample, color=‘muted’)

sns.violinplot(sample, color=pal)

sns.factorplot(sample, palette=‘OrRd’)

sns.factorplot(sample, palette=‘Paired’)

另外color_palette()也可以在with关键词之后使用,用于临时改变配色。

with sns.color_palette(‘PuBuGn_d’):

    plot(sample)

还可以使用set_palette()改变matplotlib的配色,使所有绘图均使用同一palette,其参数与color_palette()相同。

 

数据分布的可视化

简单的单变量分布可以使用matplotlib的hist()函数绘制直方图,双变量可以使用sns.jointplot()函数绘制六边形箱图阵(hexbin plot,网上就是这么翻译的= =)。

如果需要更进一步的描述数据分布,可以使用地毯图(rug plot)和核密度估计图(Kernel Density Estimate plot, KDE plot)。Seaborn的KDE图默认使用的是高斯核函数。

sns.rugplot(data)

sns.kdeplot(data, shade = True)

和plt.hist()函数的bins参数类似,sns.kdeplot()函数有bw参数可以指定核函数的带宽(bandwidth),使密度估计对(可能为噪声的)高频信号更加或更不加敏感。bw取正实数。

核函数也可以通过kernel参数指定,值为{“biw”,“cos”,“epa”,“gau”,“tri”,“triw”}。但是核函数对密度估计函数的形态影响并不是很大。

kdeplot()函数还可以画多变量的KDE图,当样本参数传入(n_units,n_variables)形状的DataFrame时,kdeplot()将自动绘制多变量KDE图。在高维KDE图中,只能用高斯核。

kdeplot()的cmap参数可以指定配色,例如‘BuGn_d’、‘PuRd_d’、‘Purples’等。

kdeplot()还有很多参数可以实现不同样式的KDE图,参考官方手册

jointplot()函数不仅能够画双变量的联合分布概率估计图,还可以同时绘制每个变量的边缘分布

sns.jointplot(‘X’,‘Y’,data, kind=‘kde’)

sns.jointplot(x, y, kind=‘hex’)

下面介绍displot()函数。displot()函数能够将多种绘图叠加在一个图中,该函数提供一个统一的接口来绘制直方图、核密度图和地毯图等。displot()会默认自动选择合适的bin的数量,来绘制直方图。函数可以设置rug、hist和kde参数来选择哪些图参与叠加绘制,[plot]_kws参数(例如kde_kws)赋值为参数名与对应值的键值对字典,来指定对应绘图的参数。参数字典中的参数名为字符串类型。

sns.distplot(data, rug=False, hist=True, hist_kws={‘color’:‘slategray’})

 

定量数据的线性模型绘图

线性模型用于理解激励(自变量)与响应(因变量)之间的线性关系。下面以介绍lmplot()函数的使用为主。

lmplot()函数的数据参数使用Pandas的DataFrame类型,并且需要提供激励和响应变量的在DataFrame中的name。

sns.lmplot(‘total_bill’,‘tip’,tips)

quantitative_linear_models_7_0[1]

图中给出了样本的散点图和回归直线,以及95%置信区间的范围。可以使用ci参数指定置信区间的百分比,例如ci=68表示置信度为68%。和distplot()函数类似,lmplot()也可以使用字典参数指定不同绘图图层的参数,例如

sns.lmplot(‘total_bill’,‘tip’,tips,

            scatter_kws={‘marker’:‘.’,‘color’:‘slategray’},

            line_kws={‘linewidth’:1,‘color’:‘seagreen’})

quantitative_linear_models_11_0[1]

当数据是定量离散的,可以使用抖动参数提高视觉效果。

sns.lmplot(‘size’,‘tip’,tips,x_jitter=0.15)

quantitative_linear_models_15_0[1]

离散变量的表示也可以使用估计值和范围代替,给x_estimator传入估计值的计算函数名即可。例子中使用的是均值估计。

sns.lmplot(‘size’,‘tip’,tips,x_estimator=np.mean)

quantitative_linear_models_17_0[1]

连续变量也可以使用x_bins参数离散化。

bins = [10, 20, 30, 40]

sns.lmplot(‘total_bill’, ‘tip’, tips, x_bins=bins)    #x_bins也可以赋值为bins的数量

quantitative_linear_models_19_0[1]

lmplot()函数支持使用hue参数区分数据集的不同子集,以便画出子集的线性回归函数。hue取值为DataFrame的某个name。

col参数也可以达到相似的效果,与hue参数的区别是,hue参数是将name所指定的不同类型的数据叠加在一张图中显示,而col参数将不同类型的数据画在不同图中。如果同时使用两个参数,则仍是不同图片,但样本点与回归直线的色彩不同。

lmplot()函数也有palette参数指定绘图调色板。hue_order参数通过传入列表指定顺序。

lmplot()函数可以绘制更高阶的回归拟合曲线,通过order参数指定阶数。

sns.lmplot(‘size’, ‘total_bill’, tips, order=2)

quantitative_linear_models_34_0[1]

lmplot()函数还可以画出lowess图(局部加权光滑描点图?),但暂时没有置信区间。

sns.lmplot(‘total_bill’, ‘tip’, tips, lowess=True, line_kws={‘color’:‘0.2’})

quantitative_linear_models_36_0[1]

lmplot()可以实现逻辑回归。由于样本是二值分布的,当使用一般线性回归时,会出现在某些范围概率为负或超过1的情况,因此需要使用逻辑回归。

sns.lmplot(‘total_bill’, ‘big_tip’, tips, y_jitter=0.05, logistic=True)

quantitative_linear_models_44_0[1]

lmplot()可以通过参数降低噪声点对回归结果的影响,使用robust参数和n_boot参数减少bootstrap迭代的次数。

sns.lmplot(‘total_bill’, ‘tip’, tips, robust=True, n_boot=500)

当处理多个变量时,可能两个变量看上去是相关的,但引入另一个变量时就变得不相关。可以使用x_partial参数。

lmplot()实际上调用的是更底层的regplot()函数进行回归和绘图。regplot()函数不会改变已画好的图像。因此如果需要更多的控制,可以使用regplot()函数。regplot()函数可以使用lmplot()的绝大多数参数,但regplot()一次只能画一个点或一条回归线。另外,regplot()函数接受numpy数组作为数据,并可以单独设置颜色。

residplot()函数可以画出样本的残差(理论上散点应该无规律地分布在y=0附近)。但对样本进行适当变换,可能体现残差的高阶特征,可以使用lowess参数得到拟合曲线。

jointplot()函数也可以将kind参数设置为‘resid’或者‘reg’画出残差或回归曲线。

corrplot()函数是一个比较有用的函数,能够画出数据集变量相关矩阵的热度图,提供数据集变量两两之间的关系的宏观视图。函数默认使用排列检验得到相关矩阵的p值,当数据集较大时,排列检验将会相对比较耗时。当然如果数据集较大,p值可能并不是特别相关,因此可以不使用显著性检验。corrplot()的参数允许去掉颜色条、去掉星形标号、设置颜色、设置tail(只关心正值或负值)、设置颜色条的范围、去掉相关系数标注等。

还有interactplot()函数和coefplot()函数的使用可以参考官方手册。

 

(此处省略官方网站的Linear models with categorical dataPlotting statistical timeseries data两节)

 

Data-aware网格绘图

多维数据需要将数据分为子集依次画图,这种绘图称为lattice(或者trellis)绘图。Seaborn基于matplotlib提供绘制多维数据的函数。Seaborn的接口要求使用Pandas的DataFrame作为数据参数,并且必须是结构化的数据(tidy data),每一行为一个观测,每一列为一个变量。

FacetGrid类能够方便的绘制这类图像。FacetGrid对象有三个维度:row,col和hue。下面是几个例子。

tips = sns.load_dataset(‘tips’)

g = sns.FaceGrid(tips, col=‘time’)    #只是将grid初始化,并不绘图

g.map(plt.hist, ‘tip’)

axis_grids_9_0[1]

注意得到最终图像需要使用map()函数。通过map()函数不同的参数,可以实现不同的绘图。第一个参数可以是plt.hist, plt.scatter, sns.regplot, sns.barplot, sns.distplot, sns.pointplot等。

需要画联合分布时,可以使用JointGrid类,其性质与FaceGrid类似。JointGrid对象使用plot()函数、plot_marginals()函数、plot_joint()函数和annotate()函数画不同样式的图像。具体参数及使用见官方手册。

 

 

 

(图片均来自于官方网站,版权归原作者所有)

Avatar_small
AP SSC Maths Model P 说:
2022年9月11日 17:51

Mathematics is one of the tough subjects and also an easy subject for class 10th standard students of TM, EM, <a href="https://jnanabhumiap.in/ap-10th-ssc-maths-model-paper-pdf-download/">AP SSC Maths Model Paper</a> UM and HM studying at government and private schools of the state. Department of School Education and teaching staff of various institutions have designed and suggested the Mathematics question paper with solutions for all chapters topic wide for each lesson of the course, and the AP SSC Maths Model Paper 2023 Pdf designed based on the new revised syllabus and curriculum.

Avatar_small
AP SSC Maths Model P 说:
2022年9月11日 17:53

Mathematics is one of the tough subjects and also an easy subject for class 10th standard students of TM, EM, AP SSC Maths Model Paper UM and HM studying at government and private schools of the state. Department of School Education and teaching staff of various institutions have designed and suggested the Mathematics question paper with solutions for all chapters topic wide for each lesson of the course, and the AP SSC Maths Model Paper 2023 Pdf designed based on the new revised syllabus and curriculum.

Avatar_small
TOM 说:
2022年10月20日 07:42

Time is flying and I learnt many new things from your posts. I often get various technical solutions from your page and practically utilize them on https://www.huffpost.com/archive/ca/entry/to-pay-or-not-to-pay-someone-to-write-my-essay-for-me_b_14793970  assignments. Thank you for sharing this post.

 

Avatar_small
seo service UK 说:
2024年1月03日 15:02

Brilliant post! Your incorporation of practical tips and real-life examples adds substantial weight to your ideas. Your evident commitment is admirable. Anxiously awaiting your forthcoming content. Keep up the impressive work!

Avatar_small
로켓도메인 说:
2024年1月10日 14:01

This article is actually the best topic on this registry related issue. I agree with your conclusions and eagerly look forward to your next update. 

Avatar_small
카지노탐구생활 说:
2024年1月10日 14:17

To be successful at losing weight, you need to focus on more than just your appearance. Approaches that leverage mood, overall health, and mental health are most effective. Because no two weight loss journeys are the same, we asked many women who have achieved major weight loss exactly how they did it. 

Avatar_small
토토사이트추천 说:
2024年1月10日 14:24

This article is actually the best topic on this registry related issue. I agree with your conclusions and eagerly look forward to your next update. 

Avatar_small
메이저놀이터추천 说:
2024年1月10日 14:33

Positive site, where did you get the information for this post? I'm glad I found it. I'll be checking back soon to see what additional posts you include. 

Avatar_small
토토사이트순위 说:
2024年1月10日 14:44

first-rate facts, precious and amazing layout, as percentage suitable stuff with suitable thoughts and thoughts, plenty of incredible statistics and inspiration, each of which i want, way to provide this type of useful facts here. I used to be genuinely surfing through the net looking for a few information and got here throughout your weblog. I’m impressed through the records which you have in this blog. It suggests how well you recognize this problem. Bookmarked this web web page, will come lower back for extra. Truly exceptional and exciting put up. I used to be searching out this kind of statistics and loved reading this one. Hold posting. Thank you for sharing.

Avatar_small
안전놀이터 说:
2024年1月10日 15:00

Decide on a subject or theme for your video. It could be a tutorial, vlog, review, comedy skit, educational content, etc.

Avatar_small
ok토토먹튀검증 说:
2024年1月10日 15:05

I do agree with all of the ideas you’ve presented in your post. They’re very convincing and will certainly work. Still, the posts are very short for starters. Could you please extend them a bit from next time? Thanks for the post.

Avatar_small
토토패밀리 说:
2024年1月10日 15:14

Decide on a subject or theme for your video. It could be a tutorial, vlog, review, comedy skit, educational content, etc.

Avatar_small
먹튀검증커뮤니티 说:
2024年1月10日 15:25

Thank you for some other informative blog. Where else could I get that type of information written in such an ideal means? I have a mission that I’m just now working on, and I have been at the look out for such information. 

Avatar_small
메이저놀이터 说:
2024年1月10日 15:51

Howdy! This post could not be written much better! Reading through this post reminds me of my previous roommate! He always kept talking about this.

Avatar_small
토토매거진 说:
2024年1月10日 16:06

writing with fashion and getting top compliments at the article is pretty tough, to be honest. But you have carried out it so lightly and with so cool feeling and you've nailed the process. This article is possessed with style and i am giving top compliment. High-quality! I suppose that is one of the most vast information for me. And i am satisfied studying your article. I ought to mention that, as much as i cherished listening to what you would possibly have to say, i got bored after a while. Live up to date for distinctive and thorough commands if you're searching out the exceptional . Very informative publish ! There is lots of data

Avatar_small
메이저사이트 说:
2024年1月10日 16:12

fantastic weblog. I extremely joyful in perusing your articles. This is sincerely an tremendous perused for me. I have bookmarked it and i am expecting perusing new articles. Keep doing fantastic! There may be a lot in this text that i would by no means have notion of on my own. Your content material offers readers matters to think about in an exciting way. Exceptional article. Captivating to study. I really like to examine such an extraordinary article. Thank you! It has made my task more and extra clean. Keep rocking. Very exciting statistics, well worth recommending. However, i advise this

Avatar_small
메이저사이트 说:
2024年1月10日 16:26

writing with fashion and getting top compliments at the article is pretty tough, to be honest. But you have carried out it so lightly and with so cool feeling and you've nailed the process. This article is possessed with style and i am giving top compliment. High-quality! I suppose that is one of the most vast information for me. And i am satisfied studying your article. I ought to mention that, as much as i cherished listening to what you would possibly have to say, i got bored after a while. Live up to date for distinctive and thorough commands if you're searching out the exceptional . Very informative publish ! There is lots of data

Avatar_small
먹튀사이트조회 说:
2024年1月10日 16:34

nce. I need your method of inscription.. Thank you for taking the time to discuss this, i sense strongly about it and love mastering more in this subject matter. If feasible, as you benefit information, might you thoughts updating your blog with greater data? It's far extremely helpful for me

Avatar_small
온라인카지노순위 说:
2024年1月10日 16:54

Interesting topic for a blog. I was searching the internet for fun and found your website. Great post. Thanks for sharing your knowledge! It's great to see that some people still put effort into maintaining their website. I'll check back soon. 

Avatar_small
토토사이트 说:
2024年1月10日 17:10

Interesting topic for a blog. I was searching the internet for fun and found your website. Great post. Thanks for sharing your knowledge! It's great to see that some people still put effort into maintaining their website. I'll check back soon. 

Avatar_small
카지노사이트목록 说:
2024年1月10日 17:51

The comments are owned by the poster. We are not responsible for its content. We value free speech but remember this is a public forum and we hope that people would use common sense and decency. If you see an offensive comment please email us at news@thepinetree.net

Avatar_small
토토사이트추천 说:
2024年1月10日 18:01

bulous post, you have denoted out some fantastic points, I likewise think this s a very wonderful website. I will visit again for more quality contents and also, recommend this site to all. Thanks. บาคาร่าออนไลน์

Avatar_small
แนะนำ เว็บบาคาร่า 说:
2024年1月10日 18:14

Yes i am totally agreed with this article and i just want say that this article is very nice and very informative article.I will make sure to be reading your blog more. You made a good point but I can't help but wonder, what about the other side? 

Avatar_small
먹튀검증업체 说:
2024年1月10日 19:29

Very complete and informative explanation. Thank you for this great post. I love your work.

Avatar_small
토토사이트 说:
2024年1月10日 19:36

This article is actually the best topic on this registry related issue. I agree with your conclusions and eagerly look forward to your next update. 

Avatar_small
먹튀검증 说:
2024年1月10日 19:51

To be successful at losing weight, you need to focus on more than just your appearance. Approaches that leverage mood, overall health, and mental health are most effective. Because no two weight loss journeys are the same, we asked many women who have achieved major weight loss exactly how they did it. 

Avatar_small
토토사이트 说:
2024年1月10日 19:58

This article is actually the best topic on this registry related issue. I agree with your conclusions and eagerly look forward to your next update. 

Avatar_small
토토사이트 说:
2024年1月10日 19:58

This article is actually the best topic on this registry related issue. I agree with your conclusions and eagerly look forward to your next update. 

Avatar_small
먹튀검증 说:
2024年1月10日 20:07

Positive site, where did you get the information for this post? I'm glad I found it. I'll be checking back soon to see what additional posts you include. 

Avatar_small
먹튀검증사이트 说:
2024年1月10日 20:21

first-rate facts, precious and amazing layout, as percentage suitable stuff with suitable thoughts and thoughts, plenty of incredible statistics and inspiration, each of which i want, way to provide this type of useful facts here. I used to be genuinely surfing through the net looking for a few information and got here throughout your weblog. I’m impressed through the records which you have in this blog. It suggests how well you recognize this problem. Bookmarked this web web page, will come lower back for extra. Truly exceptional and exciting put up. I used to be searching out this kind of statistics and loved reading this one. Hold posting. Thank you for sharing.

Avatar_small
먹튀검증 说:
2024年1月10日 21:32

writing with fashion and getting top compliments at the article is pretty tough, to be honest. But you have carried out it so lightly and with so cool feeling and you've nailed the process. This article is possessed with style and i am giving top compliment. High-quality! I suppose that is one of the most vast information for me. And i am satisfied studying your article. I ought to mention that, as much as i cherished listening to what you would possibly have to say, i got bored after a while. Live up to date for distinctive and thorough commands if you're searching out the exceptional . Very informative publish ! There is lots of data

Avatar_small
안전놀이터 说:
2024年1月10日 21:38

Decide on a subject or theme for your video. It could be a tutorial, vlog, review, comedy skit, educational content, etc.

Avatar_small
메이저사이트 说:
2024年1月10日 21:57

Decide on a subject or theme for your video. It could be a tutorial, vlog, review, comedy skit, educational content, etc.

Avatar_small
해외사이트가입 说:
2024年1月10日 21:57

Regular visits listed here are the easiest way to assess your energy, so visit our website every day and search for new and interesting information. Many thanks, 

Avatar_small
토토사이트 说:
2024年1月10日 22:06

Interesting topic for a blog. I was searching the internet for fun and found your website. Great post. Thanks for sharing your knowledge! It's great to see that some people still put effort into maintaining their website. I'll check back soon. 

Avatar_small
제왕카지노 说:
2024年1月10日 22:09

Thank you for some other informative blog. Where else could I get that type of information written in such an ideal means? I have a mission that I’m just now working on, and I have been at the look out for such information. 

Avatar_small
먹튀검증업체 说:
2024年1月10日 22:18

Positive site, where did you get the information for this post? I'm glad I found it. I'll be checking back soon to see what additional posts you include.

Avatar_small
메이저안전놀이터 说:
2024年1月10日 22:34

Good to become visiting your weblog again, it has been months for me. Nicely this article that i've been waited for so long. I will need this post to total my assignment in the college, and it has exact same topic together with your write-up. Thanks, good share. 

Avatar_small
먹튀사이트유형 说:
2024年1月10日 22:35

The comments are owned by the poster. We are not responsible for its content. We value free speech but remember this is a public forum and we hope that people would use common sense and decency. If you see an offensive comment please email us at news@thepinetree.net

Avatar_small
먹튀검증 说:
2024年1月10日 22:55

Regular visits listed here are the easiest way to assess your energy, so visit our website every day and search for new and interesting information. Many thanks, 

Avatar_small
토토사이트 说:
2024年1月20日 13:47

Nice post mate, keep up the great work, just shared this with my friendz
Nice post mate, keep up the great work, just shared this with my friendz

Avatar_small
토토사이트 说:
2024年1月20日 15:20

It is a great website.. The Design looks very good.. Keep working like that!

Avatar_small
슬롯사이트 说:
2024年1月20日 15:51

I am very enjoyed for this blog. Its an informative topic. It help me very much to solve some problems. Its opportunity are so fantastic and working style so speedy. The sims : Discover university is now available worldwide on PC! Your dorm room is ready for you, dom't be late for your first day of class

Avatar_small
바카라사이트 说:
2024年1月20日 16:37

Your article has piqued a lot of positive interest. I can see why since you have done such a good job of making it interesting

Avatar_small
온라인 카지노 说:
2024年1月20日 17:25

I think that thanks for the valuabe information and insights you have so provided here

Avatar_small
토토사이트 说:
2024年1月20日 18:02

Wow, this is really interesting reading. I am glad I found this and got to read it. Great job on this content. I like it.

Avatar_small
바카라 커뮤니티 说:
2024年1月20日 18:36

We are really grateful for your blog post. You will find a lot of approaches after visiting your post. Great work

Avatar_small
카지노뱅크 说:
2024年1月20日 18:56

Thanks for providing recent updates regarding the concern, I look forward to read more

Avatar_small
토토사이트 说:
2024年1月20日 19:30

"I am genuinely pleased to glance at this web site posts which consists of
lots of helpful data, thanks for providing these information."

Avatar_small
카지노사이트 说:
2024年1月20日 20:17

I think this is a really good article. You make this information interesting and engaging. You give readers a lot to think about and I appreciate that kind of writing

Avatar_small
industrial outdoor s 说:
2024年1月20日 20:49

The information you have posted is very useful. The sites you have referred was good. Thanks for sharing

Avatar_small
카지노 说:
2024年1月20日 21:26

I couldn’t have really asked for a more rewarding blog. You’re there to give excellent suggestions, going directly to the point for simple understanding of your target audience. You’re surely a terrific expert in this subject. Thank you for remaining there human beings like me.

Avatar_small
소액결제현금화 说:
2024年1月21日 13:46

Hi, thank you so much for sharing this, it is extremely useful. Thanks again

Avatar_small
스포츠중계 说:
2024年1月21日 15:32

Nice post. I was continuously checking this blog and I am impressed! Extremely useful info particularly the last part .I care for such information much. I was seeking this particular info for a long time. Thank you and good luck .

Avatar_small
카지노사이트 说:
2024年1月21日 16:01

"“After reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article.

“"

Avatar_small
홈타이 说:
2024年1月24日 16:14

This was among the best posts and episode from your team it let me learn many new things

Avatar_small
토토사이트 说:
2024年1月24日 19:26

Your article has piqued a lot of positive interest. I can see why since you have done such a good job of making it interesting

Avatar_small
카지노 说:
2024年1月26日 11:06

카지노 바카라사이트 우리카지노 카지노는 바카라, 블랙잭, 룰렛 및 슬롯 등 다양한 게임을 즐기실 수 있는 공간입니다. 게임에서 승리하면 큰 환호와 함께 많은 당첨금을 받을 수 있고, 패배하면 아쉬움과 실망을 느끼게 됩니다.

Avatar_small
하노이 밤문화 说:
2024年1月26日 11:09

하노이 꼭 가봐야 할 베스트 업소 추천 안내 및 예약, 하노이 밤문화 에 대해서 정리해 드립니다. 하노이 가라오케, 하노이 마사지, 하노이 풍선바, 하노이 밤문화를 제대로 즐기시기 바랍니다. 하노이 밤문화 베스트 업소 요약 베스트 업소 추천 및 정리.

Avatar_small
홈타이 说:
2024年1月27日 13:58

You made such an interesting piece to read, giving every subject enlightenment for us to gain knowledge. Thanks for sharing the such information with us to read this.

Avatar_small
무료스포츠중계 说:
2024年1月27日 14:13

Great post. I used to be checking continuously this blog and I’m impressed! Extremely helpful info particularly the final section I deal with such info much. I was looking for this certain info for a long time. Thank you and best of luck.

Avatar_small
먹튀검증 说:
2024年1月27日 14:30

The appearance positively wonderful. All of these miniature info are fashioned utilizing massive amount historical past experience. I want it all significantly 

Avatar_small
먹튀검증 说:
2024年1月29日 10:18

No.1 먹튀검증 사이트, 먹튀사이트, 검증사이트, 토토사이트, 안전사이트, 메이저사이트, 안전놀이터 정보를 제공하고 있습니다. 먹튀해방으로 여러분들의 자산을 지켜 드리겠습니다. 먹튀검증 전문 커뮤니티 먹튀클린만 믿으세요!!

Avatar_small
베트남 밤문화 说:
2024年1月29日 10:23

베트남 남성전용 커뮤니티❣️ 베트남 하이에나 에서 베트남 밤문화를 추천하여 드립니다. 베트남 가라오케, 베트남 VIP마사지, 베트남 이발관, 베트남 황제투어 남자라면 꼭 한번은 경험 해 봐야할 화끈한 밤문화로 모시겠습니다.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter