日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

R plot图片背景设置为透明_R语言(绘图入门)

發(fā)布時(shí)間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R plot图片背景设置为透明_R语言(绘图入门) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文鏈接:https://wklchris.github.io/R-plotting-basic.html

R 的繪圖功能一直為業(yè)內(nèi)所津津樂道。用了 Python 的 matplolibt 和 R 的 ggplot2 后,我再也不想用 MATLAB 畫圖了。

我現(xiàn)在這里先給出本博文用到的包:

libraryLoading required package: lattice
Loading required package: survival
Loading required package: Formula
Loading required package: ggplot2

Attaching package: 'Hmisc'

The following objects are masked from 'package:base':

format.pval, round.POSIXt, trunc.POSIXt, units
libraryLoading required package: sm
Package 'sm', version 2.2-5.4: type help(sm) for summary information

基礎(chǔ)命令

使用?dev.new()?命令新建一個(gè)圖片視圖,這樣你可以輸出多個(gè)圖片到屏幕,而不是讓之后輸出的覆蓋之前的圖形。關(guān)于 dev.next(), dev.prev(), dev.set() 及 dev.off() 等內(nèi)容,參考 help(dev.cur).

plot() 繪圖類型

基本的繪圖類型有以下幾種,使用 type= 參數(shù)指定:

  • p:僅數(shù)據(jù)點(diǎn),默認(rèn)值。

  • l:僅線段

  • b:線段與點(diǎn)

  • c:僅線段,但點(diǎn)的位置留出空白

  • o:線段與點(diǎn),但線段會(huì)延伸到點(diǎn)內(nèi)部

  • h:直方圖風(fēng)格,即帶豎直密度線

  • s:階梯圖

  • S:其他特殊情況

  • n;不繪制圖形。用于指定標(biāo)題、坐標(biāo)軸名稱的情況

輸出到文件

將畫圖的內(nèi)容輸出到文件,可以指定路徑,不指定就輸出到當(dāng)前工作目錄。例如輸出 pdf:

pdf("plot.pdf")
plot(c(1, 2, 3), c(3, 4, 2))
dev.off()

除了 pdf() 外,其他可用的輸出格式對(duì)應(yīng)函數(shù):

  • wmf:win.metafile(),僅在 Windows 系統(tǒng)下使用

  • png: png()

  • jpeg: jpeg()

  • bmp: bmp()

  • tiff: tiff()

  • ps: postscript()

例子。詳細(xì)的參數(shù)在下文討論。

x

繪圖參數(shù):par()

函數(shù) par() 用來獲取當(dāng)前圖形的參數(shù)。如果加入 no.readonly=TRUE, 表示該參數(shù)列表是非只讀的,即用戶可以進(jìn)行修改。例如對(duì)于上圖,我們獲取其參數(shù),進(jìn)行更改后再傳到新的圖中(pch 參數(shù)可能有些費(fèi)解,我們?cè)谙挛挠懻?:

# 方法一:類交互式的更改方法

點(diǎn)樣式、線寬與線型

參數(shù)可選值
pch 點(diǎn)樣式0空方塊,1空?qǐng)A,2空三角,3加號(hào),4乘號(hào),5斜空方塊,6空倒三角,7叉方塊,8星號(hào),9斜叉方塊,10圈加號(hào),11六芒星,12田,13圈乘號(hào),14加框尖角,15方塊,16圓點(diǎn),17三角,18斜方塊,19帶邊線圓點(diǎn),20帶邊線2/3圓點(diǎn),21填充圓,22填充方塊,23填充斜方塊,24填充三角,25填充倒三角。
cex 點(diǎn)大小數(shù)字,例如 0.5。
lty 線型1實(shí)線,2短虛線,3點(diǎn)線,4點(diǎn)劃線,5長(zhǎng)虛線,6長(zhǎng)短劃線。
lwd 線寬數(shù)字。

注: pch = 19 相比 pch = 16,主要體現(xiàn)在 lwd 與 cex 不同時(shí),帶邊線圓點(diǎn)的尺寸較大。

顏色

調(diào)整顏色的參數(shù)有:

  • col: 繪圖顏色。

  • col.axis:坐標(biāo)軸刻度顏色。

  • col.lab:坐標(biāo)軸名稱顏色。

  • col.main:圖形標(biāo)題顏色。

  • col.sub:副標(biāo)題顏色。

  • fg:圖形前景色。

  • bf:圖形背景色。

指定顏色的方式有如下幾種:

  • 數(shù)字下標(biāo):col=1

  • 名稱:col=”white”

  • 十六進(jìn)制值:col=”#FFFFFF”

  • 標(biāo)準(zhǔn)化RGB/HSV值:col=rgb(0,1,1)/hsv(0,0,1)

至于 R 支持的顏色名稱,多達(dá) 600 余種,這里給出一些我認(rèn)為常見的:

OutputColors

R 中還有其他方式可以生成一系列的顏色,比如:

par

標(biāo)簽和標(biāo)題文本

從上文可以看出端倪,標(biāo)簽與標(biāo)題參數(shù)有:

  • 標(biāo)題/副標(biāo)題:title/sub

  • 坐標(biāo)軸標(biāo)題:xlab/ylab

在標(biāo)題中使用上文介紹的參數(shù):

title(main="My Title", col.main="red",
sub="My Subtitle", col.sub="blue",
xlab="My X label", ylab="My Y label",
col.lab="green", cex.lab=0.75)

要定義它們的字體,可添加的參數(shù)有:

參數(shù)含義
cex基礎(chǔ)縮放倍數(shù)
cex.axis坐標(biāo)軸刻度的縮放倍數(shù)
cex.lab坐標(biāo)軸標(biāo)題的縮放倍數(shù)
cex.main圖形標(biāo)題的縮放倍數(shù)
cex.sub圖形副標(biāo)題的縮放倍數(shù)
font字體樣式。1常規(guī),2加粗,3加斜,4加粗加斜,5符號(hào)字體
font.axis坐標(biāo)軸刻度的字體樣式
font.lab/ main/ sub類推
ps字體磅值。文字的最終大小為 cex * ps
family字族。例如 serif襯線, sans無襯線, mono等寬

字族的使用需要注意:Windows 中,等寬映射為 Courier New,襯線 Times New Roman,無襯線 Arial。你可以使用 windowsFonts() 函數(shù)來更改或者創(chuàng)建映射,例如我個(gè)人常用的 DejaVu 等寬字體:

windowsFonts

如果你需要將圖片輸出到 pdf,這個(gè)參數(shù)也是可以使用的:

pdf(file="filename.pdf", family="M")

圖形尺寸與邊距

參數(shù) pin 用于指定圖形尺寸(英寸),例如?pin=c(4, 3)?表示 4 英寸寬 3 英寸高。

用 mai()/mar() 依次指定下左上右四個(gè)方向的邊距,單位分別是英寸與英分。默認(rèn)是?mar(c(5, 4, 4, 2)) + 0.1

自定義其他元素

坐標(biāo)軸

函數(shù) side() 用于自定義坐標(biāo)軸:

axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)
  • side: 指定在哪繪制坐標(biāo)軸:1下2左3上4右

  • at:刻度線位置

  • labels:刻度線旁的標(biāo)簽,缺省時(shí)使用 at 中的值

  • pos:坐標(biāo)軸與另一坐標(biāo)軸相交位置的值

  • lty/col:線型/線與刻度的顏色

  • las:標(biāo)簽平行于(=0)或垂直于(=2)坐標(biāo)軸

  • tck:刻度線。負(fù)值表示在圖形外側(cè),0表示禁用刻度,1表示全長(zhǎng)(即網(wǎng)格線);默認(rèn) -0.01

網(wǎng)格線:abline() 與次要刻度

如果想使用次要刻度,請(qǐng)安裝 Hmisc 包。次要刻度的長(zhǎng)度將會(huì)是主刻度的?tick.ratio?倍。

網(wǎng)格線使用 abline() 命令,并分別用 h/v 指定網(wǎng)格線是豎直還是水平。

# 需要加載:library(Hmisc)

圖例

命令 legend() 用于添加圖例。

legend(location, legend, [title=, ...])

參數(shù)含義:

  • location:指定圖例左上角的坐標(biāo),或者使用以下關(guān)鍵字:

    • 關(guān)鍵字:left/right, bottom/top, bottomleft/right, topleft/right, center

    • 如果使用了以上關(guān)鍵字,可以使用 inset= 參數(shù)指定向圖形內(nèi)移動(dòng)的比例(分?jǐn)?shù)形式)

  • legend:標(biāo)簽組成的字符型向量。

  • title:圖例標(biāo)題的字符串

  • 其他參數(shù):

    • col/pch/lwd/lty:圖例線條顏色/點(diǎn)樣式/線寬/線型

    • bty/fill:盒型樣式/顏色填充(用于條形圖、箱形圖或餅圖)

    • bg:背景色

    • text.col:文本顏色

    • horiz:TRUE 會(huì)將圖例水平放置

例子參見“直方圖”一節(jié)的最后一例。

標(biāo)注

文字標(biāo)注

主要有兩個(gè)函數(shù):text() 與 mtext()。前者向繪圖區(qū)添加標(biāo)注,后者向圖形的邊界添加標(biāo)注。

text(location, "string", pos, ...)
mtext("string", side, line=n, ...)

可以參考“標(biāo)簽和標(biāo)題文本”一節(jié)的例子。其中:

  • pos:使用1下2左3上4右的對(duì)應(yīng)關(guān)系,比如“顏色”一節(jié)中就使用了 pos=1 的參數(shù)。

    • 如果指定了 pos,那么也可以指定 offset= 作為偏移量比值(相對(duì)單個(gè)字符寬)

  • side:指定放置文本的圖片邊界,同樣是1下2左3上4右。

    • 你可以使用 line= 來移動(dòng)文本(正值向外,負(fù)值向內(nèi));

    • 還可以通過 adj=0/1 指定文本向左下/右上對(duì)齊。

數(shù)學(xué)標(biāo)注

類似 LaTeX 的標(biāo)注方式,不過實(shí)質(zhì)上仍有一些區(qū)別:

代碼效果代碼效果代碼效果
x%+-%yx±y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x±yx±yx%/%yx÷y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x÷yx÷yx%*%yx×y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x×yx×y
x%.%yx?y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x?yx?yx[i]xi" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">xixix^2x2" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x2x2
x%prop%yx∝y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x∝yx∝ysqrt(x, y)xy" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">y√xxyx!=yx≠y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x≠yx≠y
x%~~%yx≈y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x≈yx≈yx%=~%yx?y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x?yx?yx%==%yx≡y" role="presentation" style="display: inline-block; line-height: 0; text-align: left; font-size: 18.72px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; padding-top: 1px; padding-bottom: 1px;">x≡yx≡y

部分字體相關(guān)的命令:

  • plain(x):正體

  • italic(x):意大利字族(加斜)

  • bold(x):加粗

  • bolditalic(x):加斜加粗

  • underline(x):下劃線

疊加繪圖

疊加繪圖最簡(jiǎn)單的方法,就是使用繪圖的?new=TRUE:

plot

如果想要添加額外的點(diǎn)、線,使用?points()?命令與?lines()?命令。以及上面提到的參考線?abline()?命令:

plot

子圖

函數(shù) layout()

函數(shù) layout() 是一個(gè)強(qiáng)大的命令。例如:

layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))

就指定了圖 1 占用第一行,圖 2 和 3 共用第二行。也可以用 widths=/heights= 參數(shù)指定各列寬/各行高之間的比例:

tmp

函數(shù) par() 的 mfrow 參數(shù)

前文介紹過的 par() 中的 mfrow= 參數(shù)也是一個(gè)控制子圖的方式。下例是兩行兩列的子圖:

opar par(mfrow=c(2,2))
plot(...) # 圖 1,左上
plot(...) # 圖 2,右上
plot(...) # 圖 3,左下
plot(...) # 圖 4,右下
par(opar)

函數(shù) par() 的 fig 參數(shù)

這種方式支持你以任何的位置、組合任意的圖形。它比規(guī)整的 layout() 更加靈活。以下不使用 0.8 而使用 0.65 是為了看上去更緊湊。

opar

統(tǒng)計(jì)圖

條形圖:barplot()

直接上例子。

tmp

餅圖:pie()

并不推薦的統(tǒng)計(jì)圖類型,因此 R 中的功能也很有限。

piedt

直方圖:hist() 及核密度曲線

直方圖表示的是一維的數(shù)據(jù)(連續(xù)型)特征,縱軸是其在對(duì)應(yīng)橫軸區(qū)間內(nèi)的頻數(shù)或者頻率。

hist

其中 freq 參數(shù)默認(rèn)指定縱軸為頻數(shù)而不是頻率,break 用于指定橫軸上分組的個(gè)數(shù)。

set.seed

軸須圖是一種一維的數(shù)據(jù)呈現(xiàn),而上面的左圖中的密度曲線是一種核密度估計(jì)。要比較核密度圖,參考 sm 包的 sm.density.compare() 函數(shù)。如果只是要繪制,使用 density() 函數(shù)輔助即可:

plot

箱形圖:boxplot() 及小提琴圖

或者叫箱線圖、盒須圖。它描述了連續(xù)變量的五個(gè)特征參數(shù):

fig

如果是 dataframe 數(shù)據(jù)集中的類別型變量 A ,使用如下語句生成并列箱形圖:

boxplot(y~A, data=dataframe)

如果將公式改寫成?y~A*B,那么會(huì)將類別型變量 A 和 B 的各水平兩兩組合,再生成箱形圖。

其他參數(shù):

  • varwidth=F/T:為 TRUE 時(shí),箱形圖的寬度與樣本數(shù)的算術(shù)平方根成正比。

  • horizontal=F/T:為 TRUE 時(shí),箱形圖被橫置。

  • notch=F/T:為 TRUE 時(shí),箱形圖在繪制時(shí)會(huì)顯示“凹槽”。

df

最后再提一下箱形圖與核密度圖的一個(gè)結(jié)合體:小提琴圖(violin plot)。這種圖的繪制需要 vioplot 包。

在小提琴圖中,核密度曲線被豎直放置,并對(duì)稱地顯示于數(shù)據(jù)軸的兩側(cè):

# 需要加載:library(vioplot)

點(diǎn)圖

用于在水平刻度上繪制大量標(biāo)簽。本例選自參考書目同名章節(jié)。各參數(shù):

  • groups:選定一個(gè)因子,作為分組依據(jù)。

  • gcolor:各組標(biāo)簽的顏色。

# mtcars 是 R 預(yù)裝的數(shù)據(jù)集,其 cyl 變量有三個(gè)水平

猜你可能喜歡

MySQL 面試之必會(huì)知識(shí)點(diǎn)

R語言文本分詞之——Rwordseg包

Python科學(xué)計(jì)算:pandas

Python科學(xué)計(jì)算:numpy

kmeans算法python代碼——可直接運(yùn)行

梯度下降算法

總結(jié)

以上是生活随笔為你收集整理的R plot图片背景设置为透明_R语言(绘图入门)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。