我想创建一个条形图,其中条形按高度排序,而不是按类别按字母顺序排列.当我加载的唯一包是ggplot2时,这工作正常.但是,当我加载一些包并运行创建,排序和绘制数据框的相同代码时,条形图已经恢复为按字母顺序排序.
我每次使用都检查了数据帧str()
,结果发现数据框的属性现在不同了,即使我每次都运行相同的代码.
我的代码和输出如下所示.任何人都可以解释不同的行为吗?为什么加载一些显然不相关的包(在我所使用的所有函数似乎都没有被新加载的包掩盖的意义上无关)会改变运行transform()
函数的结果?
案例1:刚加载ggplot2
library(ggplot2)
group = c("C","F","D","B","A","E")
num = c(12,11,7,7,2,1)
data = data.frame(group,num)
data1 = transform(data, group=reorder(group,-num))
> str(data1)
'data.frame': 6 obs. of 2 variables:
$ group: Factor w/ 6 levels "C","F","B","D",..: 1 2 4 3 5 6
..- attr(*, "scores")= num [1:6(1d)] -2 -7 -12 -7 -1 -11
.. ..- attr(*, "dimnames")=List of 1
.. .. ..$ : chr "A" "B" "C" "D" ...
$ num : num 12 11 7 7 2 1 …
Run Code Online (Sandbox Code Playgroud) 我用三个面板创建了一个格子图.我可以控制轴的字体大小和刻度标签,但我还没弄清楚如何增加条带标签的字体大小.这是一个具体的例子:
# See below for the fake data to run this code
library(lattice)
barchart(choice ~ yes+no+not.app|group, data=data,
stack=TRUE, col=c("green","red","blue"),
xlim=c(0,100), layout=c(3,1),
scales=list(cex=c(1.4,1.4), alternating=3),
xlab=list(label="Percent of Respondents", fontsize=20),
main="")
Run Code Online (Sandbox Code Playgroud)
这是此代码生成的图表.请注意除了条带标签("组1","组2","组3")之外,所有字体都是好的和大的.我一直在寻找R-help和Stack Overflow,但是还没有能够解决这个问题.有谁知道神奇的咒语?
data = structure(list(choice = c("Choice 1", "Choice 1", "Choice 1",
"Choice 2", "Choice 2", "Choice 2", "Choice 3", "Choice 3", "Choice 3",
"Choice 4", "Choice 4", "Choice 4"), group = c("Group 1", "Group 2",
"Group 3", "Group 1", "Group 2", "Group 3", "Group 1", "Group 2",
"Group 3", "Group 1", …
Run Code Online (Sandbox Code Playgroud) gganimate
在gg_animate()
调用渲染动画序列时可以设置浏览选项,似乎没有选项可以更改帧标题,以使观察者更清楚框架所基于的参数是什么.
换句话说,假设frame = year
在一个图层中:如何将框架的标题设置为year: ####
####是当前帧的年份?我错过了什么或是gganimate
图书馆的限制吗?
您将如何通过变通方法获得相同的结果?谢谢你的建议.
在具有多个构面变量的图中,ggplot2重复"外部"变量的构面标签,而不是在"内部"变量的所有级别上具有单个跨越构面条带.我有一直在使用,以覆盖与使用单个跨越小面条重复外端面标签一些代码gtable_add_grob
从gtable
包.
不幸的是,由于facet strip的grob结构发生了变化,此代码不再适用于ggplot2 2.2.0.具体来说,在ggplot2的早期版本中,facet标签的每一行都有自己的一组grob.但是,在版本2.2.0中,看起来每个facet标签的垂直堆栈都是单个grob.这打破了我的代码,我不知道如何解决它.
这是一个具体的例子,取自几个月前我回答的SO问题:
# Data
df = structure(list(location = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L), .Label = c("SF", "SS"), class = "factor"), species = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用R中的一些图像数据,并且无法弄清楚如何调整图像的大小以确保它们的大小相同.
在Python中,我解决了这个问题如下:
from PIL import Image
import numpy as np
size = (100, 100)
img = Image.open(filename)
img = img.resize(size)
img = np.array(img.getdata())
Run Code Online (Sandbox Code Playgroud)
在R中,我无法找到能够完成同样事情的库.我能得到的最远的是:
library(jpeg)
img <- readJPEG(filename)
# Need something here to resize
img <- as.matrix(img)
Run Code Online (Sandbox Code Playgroud)
最简单的方法是像Pillow这样的库我可以打电话,但正如我所说,我似乎无法找到任何东西.
谢谢,
最后几天,我正在思考以下问题:我想将活动的持续时间绘制为一条线,y轴表示活动发生的日期,x轴表示时间(小时).当我处理在同一天开始和结束的活动时,这很容易.
例如:
df1<-structure(list(Date = structure(c(16802, 16803, 16805, 16806,
16809, 16810, 16812, 16813, 16816, 16820, 16821, 16822, 16829
), class = "Date"), hms1 = structure(c(1457623680, 1457620860,
1457621160, 1457622540, 1457625600, 1457621280, 1457620380, 1457619720,
1457623620, 1457621460, 1457620440, 1457617980, 1457621880), class = c("POSIXct", "POSIXt"), tzone = ""), hms2 = structure(c(1457632500, 1457627640,
1457628360, 1457629500, 1457631000, 1457625120, 1457625420, 1457624520,
1457627640, 1457626800, 1457626800, 1457622060, 1457625540), class = c("POSIXct",
"POSIXt"), tzone = "")), .Names = c("Date", "hms1", "hms2"), class = "data.frame", row.names = c(103L, 105L, 108L, 110L, 114L, …
Run Code Online (Sandbox Code Playgroud) 我希望沿着线的长度制作带有箭头(或类似的V形)的定向网络图...
该igraph
库似乎使用了polygon
接受的基本功能lty
指定行类型,但这些仅限于各种破折号.
有没有办法制作自定义符号(甚至使用三角形 pch
)在R中形成一条线?
制作图表的最小代码:
require(igraph)
gr = graph_from_literal( A -+ B -+ C )
plot(gr,edge.curved=TRUE)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果支持这个,我可以使用另一个网络分析库.我问开发商,ggraph
他说不可能做到这一点.
我有一张表,我想从rmarkdown
文档中以PDF格式输出.但是,由于我有限的乳胶技能,我无法弄清楚如何获得跨越列,单元格边框和字体面,就像我希望它们使用xtable
各种Latex
添加方式一样.
我能够使用包中的FlexTable
函数获得我想要的东西ReporteRs
,但它看起来FlexTable
只能用于rmarkdown
生成html输出,但不能用于PDF输出.
所以,我正在寻找帮助格式化我的表使用xtable
,或任何其他R包或(可能是自定义)R函数,可用于以编程方式为PDF输出创建合理复杂的表.此外,如果有一些方法可以FlexTable
同时使用PDF输出,那也会很棒.
下面我创建一个表使用,FlexTable
这样你就可以看到我的目标.接下来,我提供了一个示例rmarkdown
文档,显示了我在使用时创建类似表的(有点蹩脚)努力中所处的位置xtable
.
ReporteRs::FlexTable
版首先,让我们创建将进入表格的数据:
library(ReporteRs)
x = structure(c(34L, 6L, 9L, 35L), .Dim = c(2L, 2L), .Dimnames = structure(list(
Actual = c("Fail", "Pass"), Predicted = c("Fail", "Pass")), .Names = c("Actual",
"Predicted")), class = "table")
x=cbind(x, prop.table(x), prop.table(x, 1), prop.table(x,2))
x[, -c(1,2)] = sapply(x[,-c(1,2)], function(i) paste0(sprintf("%1.1f", i*100),"%"))
x = cbind(Actual=rownames(x), x)
Run Code Online (Sandbox Code Playgroud)
现在为FlexTable创建和格式化:
# Set up …
Run Code Online (Sandbox Code Playgroud) 我想学习如何使用RCurl(或其他合适的R包,如果我错了RCurl是正确的工具)来自动在数据文件中提交的搜索字词,以网络的形式,并把搜索结果的过程.我正在处理的具体问题如下:
我有一个数据文件给出了几辆汽车的车牌号码(LPN)和车辆识别号码(VIN).汽车的加利福尼亚部门(DMV)有让您输入LPN和VIN的最后五位数字的网页搜索形式,它返回的车辆牌照费,2010年或2009年(VLF)支付(有一个选择在输入表格上也是如此).(仅供参考:这是一个研究项目,用于查看车辆制造,型号和型号年份的VLF支付分布情况)
我可以通过手动输入每辆车数据的繁琐过程,然后手动将结果输入电子表格.但这是21世纪,我想尝试自动化这个过程.我想编写一个脚本,将每个LPN和VIN提交到DMV Web表单,然后将结果(VLF支付)放入我的数据文件中的新VLF变量中,重复执行此操作直到它到达列表末尾LPN和VIN.(顺便说一句,DMV网络表格就在这里:https: //www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do).
我的计划是使用getHTMLFormDescription()(在RHTMLForms包),找出输入字段的名称,然后使用getForm()或postForm()(在RCurl包)来检索输出.不幸的是,我在第一步陷入困境.这是我使用的R命令和输出:
> forms = getHTMLFormDescription("https://www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do")
Error in htmlParse(url, ...) :
File https://www.dmv.ca.gov/FeeCalculatorWeb/vlfForm.do does not exist
Run Code Online (Sandbox Code Playgroud)
不幸的是,对于R来说相对较新,而且几乎全新的HTTP和网络抓取,我不知道下一步该怎么做.
首先,有谁知道为什么我的getHTMLFormDescription()调用出错?或者,还有另一种方法可以找出输入字段的名称吗?
其次,您能否建议一些示例代码来帮助我开始实际提交LPN和VIN并检索输出?getForm()或postForm()是正确的方法还是我应该做其他事情?如果要提交一些真正的LPN-VIN组合会有所帮助,这里有三个:
LPN VIN
5MXH018
30135 4TOL562
74735 5CWR968 11802
最后,因为你可以看到我是一个完整的新手,你是否有我需要学习的建议,以便熟练掌握这种网络抓取以及如何去学习它(用R或另一种语言) )?对网站,书籍,列表服务器,其他StackOverflow问题等的具体建议会很棒.
谢谢你的帮助.
有没有办法在R中绘制这样的图形并且在它上面有相同的12个轴?
这是图表的图片.
这是我的一个数据
Date1 Time TravelTime
1 2016-09-04 13:11 34
2 2016-09-04 13:12 34
3 2016-09-04 13:13 33
4 2016-09-04 13:14 33
5 2016-09-04 13:15 33
6 2016-09-04 13:16 43
7 2016-09-04 13:17 44
8 2016-09-04 13:18 44
9 2016-09-04 13:19 40
10 2016-09-04 13:20 39
Run Code Online (Sandbox Code Playgroud)
这是dput的输出
structure(list(Date1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = "2016-09-04", class = "factor"), Time = structure(1:10, .Label = c("13:11",
"13:12", "13:13", "13:14", "13:15", "13:16", "13:17", "13:18",
"13:19", "13:20"), …
Run Code Online (Sandbox Code Playgroud)