- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定是否geom_bar
能够(可能我不能)用 geom_bar
创建我需要的图.我想要一个条形图,但不是从 0 开始,我有一个最小值和最大值作为每个条形的起点和终点。所需的输出如下所示:
数据结构是
dput(datos)
structure(list(CDG = c("Alicante", "Alicante", "Alicante", "Alicante",
"Alicante", "Alicante", "Alicante", "Alicante", "Alicante", "Alicante",
"Alicante", "Castellón", "Castellón", "Castellón", "Castellón",
"Castellón", "Castellón", "Castellón", "Castellón", "Castellón",
"Castellón", "Castellón", "Castellón", "Castellón", "Castellón",
"Castellón", "Castellón", "Castellón", "Castellón", "Valencia",
"Valencia", "Valencia", "Valencia", "Valencia", "Valencia", "Valencia",
"Valencia", "Valencia", "Valencia", "Valencia", "Valencia", "Valencia",
"Valencia", "Valencia", "Valencia", "Valencia", "Valencia", "Valencia",
"Valencia", "Valencia", "Valencia", "Valencia", "Valencia", "Valencia",
"Valencia"), ESTACION = structure(c(5L, 1L, 2L, 3L, 8L, 23L,
24L, 21L, 31L, 22L, 41L, 26L, 12L, 16L, 13L, 14L, 15L, 18L, 28L,
29L, 19L, 37L, 39L, 27L, 49L, 52L, 53L, 54L, 55L, 4L, 7L, 6L,
9L, 10L, 11L, 17L, 20L, 33L, 25L, 30L, 32L, 36L, 35L, 34L, 38L,
42L, 46L, 48L, 47L, 43L, 45L, 44L, 50L, 51L, 40L), .Label = c("Alacant-El_Pla",
"Alacant-Florida_Babel", "Alacant-Rabassa", "Albalat_dels_Tarongers",
"Alcoi-Verge_dels_Lliris", "Algar_de_Palancia", "Alzira", "Benidorm",
"Beniganim", "Bunnol-Cemex", "Burjassot-Facultats", "Burriana",
"Castello-Ermita", "Castello-Grau", "Castello-Patronat_d.Esports",
"Castello-Penyeta", "Caudete_de_las_Fuentes", "Cirat", "Coratxar",
"Cortes_de_Pall", "Elda-Lacy", "El_Pinos", "Elx-Agroalimentari",
"Elx-Parc_de_Bombers", "Gandia", "L.Alcora", "La_Vall_d.Uix",
"Morella", "Onda", "Ontinyent", "Orihuela", "Paterna-CEAM", "Quart_de_Poblet",
"Sagunt-CEA", "Sagunt-Nord", "Sagunt-Port", "Sant_Jordi", "Torrebaja",
"Torre_Endomenech", "Torrent-El_Vedat", "Torrevieja", "Valencia-Albufera",
"Valencia-Avd._Francia", "Valencia-Bulevard_Sud", "Valencia-Moli_del_Sol",
"Valencia-Pista_de_Silla", "Valencia-Politecnic", "Valencia-Vivers",
"Vilafranca", "Vilamarxant", "Villar_del_Arzobispo", "Vinaros_Planta",
"Vinaros_Plataforma", "Viver", "Zorita"), class = "factor"),
MAXIMO_HORARIO = c(NA, 70.7, 80, 63.7, 93.5, 73.8, 82.3,
59, 71, 85.5, 62, 73, 38, 87.2, 89.2, 82, 28.5, 84, 99.5,
86, 87, 94, 84, 70, 85.5, 91.2, 85.3, 72.4, 97.5, NA, 63.3,
96.2, 81, 68, 72.3, 64.5, 67.4, 59.5, 82.7, 77, 65.5, 89.5,
76.5, NA, 80, NA, 65.3, 66.2, 72.5, 65.8, 50.2, 54.8, 71.2,
79.5, NA), PROMEDIO_DIARIO = c(NA, 56.8, 64.5, 52.9, 86.9,
69.6, 79.4, 59, 73.9, 82.4, 61.4, 62.2, 43.1, 85.1, 55.2,
77.7, 26.2, 81.9, 94.3, 85.8, 85.1, 89.8, 80.5, 66.6, 83.3,
94.3, 87.5, 72.9, 93.3, 100.3, 60.8, 94.2, 74, 68.4, 62.5,
66.7, 66.5, 45.5, 78, 79.4, 68.2, 81.1, 72.6, NA, 77.1, NA,
55.1, 54.7, 66.8, 54.1, 49.3, 46.6, 63.9, 81.8, NA), MINIMO_HORARIO = c(NA,
26.8, 24.5, 30.2, 62, 46.5, 56.2, 59, 58.2, 67.8, 50.8, 16.7,
11.5, 63.2, 2, 62, 18, 75.2, 87.5, 80, 77.8, 83.2, 71.8,
52.5, 78.3, 88.9, 83.7, 66.6, 84.3, NA, 26.2, 80, 42, 47.2,
8.2, 43, 45.5, 4.5, 47.5, 55.7, 39.8, 68.7, 58.8, NA, 74.3,
NA, 11.5, 7.2, 25.5, 18.2, 8.5, 7.2, 14.7, 70.5, NA), MAXIMO_OCTOHORARIO = c(NA,
66.1, 81.1, 55.2, 96.9, 79.2, 89.1, NA, 81.1, 90.5, 64.6,
79.8, 66.1, 91.4, 80.8, 80.8, 28.4, 83.8, 96.1, 88.3, 88.5,
92.3, 82.7, 71.4, 85.6, 97.4, 89.1, 75.5, 95.1, NA, 79.5,
100.3, 90.4, 76.1, 83.3, 75.5, 79.7, 66.7, 87.7, 87.5, 78.3,
83.8, 76.8, NA, 76.8, NA, 74.5, 73, 81.2, 67.8, 73.1, 69,
79.9, 88.2, NA), VARIACION_MAX_HOR = c(NA, -15.1, -7, -21.3,
-10.2, -17.2, -18, NA, -18.2, -12.8, -8.2, -23.8, -57.8,
-8, 2.7, -1.3, -0.8, -5.7, -1.5, -10.8, -5.8, -0.8, -8.3,
-19.7, -6.5, -7.7, -11.9, -16.8, -2.7, NA, -27.7, -19.1,
-19.5, -24, -21.7, -28.2, -22.6, -23.7, -17.8, -25, -29.2,
-5.2, -19.5, NA, -14.3, NA, -32.2, -20.5, -20.7, -20.4, -38.1,
-29, -21.6, -20.5, NA), VARIACION_PRM_DIA = c(NA, -16.2,
-10.4, -18.9, -4, -5.8, -7.7, NA, -3, -9.4, 2, -22.9, -27.2,
1.1, -4.7, 16.8, -0.9, 0, 0.5, -1.9, 1.3, 15.1, 23.7, -14.1,
-4.8, 1.7, 14.8, -8, 14.7, -0.7, -20, -7.6, -17.9, -12.7,
-20.7, -10.7, -14.7, -24.3, -9.1, -13.6, -11.8, 18, -10.1,
NA, 10.9, NA, -24.4, -20.2, -14.9, -18.7, -25.4, -30, -18.6,
-6.7, NA), OSCILACION_DIARIO = c(NA, 43.9, 55.5, 33.5, 31.5,
27.3, 26.1, 0, 12.8, 17.7, 11.2, 56.3, 26.5, 24, 87.2, 20,
10.5, 8.8, 12, 6, 9.2, 10.8, 12.2, 17.5, 7.2, 2.3, 1.6, 5.8,
13.2, NA, 37.1, 16.2, 39, 20.8, 64.1, 21.5, 21.9, 55, 35.2,
21.3, 25.7, 20.8, 17.7, NA, 5.7, NA, 53.8, 59, 47, 47.6,
41.7, 47.6, 56.5, 9, NA), ESTACIONALIDAD_MAX = c(NA, -43,
-37.1, -50.2, -30.3, -46.8, -35.7, -55.6, -44.6, -36.1, -48.1,
-45.6, -72.3, -37.5, -29.7, -38.8, -75.3, -38.9, -29.1, -39.4,
-36.9, -30.3, -33.6, -42, -40.7, -17.3, -33.4, -46.7, -28.9,
NA, -53.2, -22, -41.9, -46.8, -43, -51, -43.6, -50.1, -39.4,
-43.3, -45.7, -32.5, -39.8, NA, -35.2, NA, -39.5, -43.3,
-39.9, -43.3, -58.1, -50.9, -45, -44.3, NA), ESTACIONALIDAD_MED = c(NA,
-15.2, -10.7, -28.9, -4.3, -11, 3.8, -17.6, 20.2, -4.2, -30.9,
-10.4, -27.6, 2.7, -0.4, 17.5, -61.5, 4.7, -5.7, 6.1, -12.7,
6.9, 18.7, -10.2, -9.1, 30.4, -12, -3.3, 20.2, 32.1, -5.1,
22, 2.4, -2.8, -6.9, -18.7, -13.9, -16.2, 10.6, -4.1, 1.5,
22.1, 12.9, NA, 12.2, NA, 12.9, -3.7, -1.6, -13.3, -19.3,
-25, -15.5, -0.8, NA), X = c(NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA)), .Names = c("CDG", "ESTACION", "MAXIMO_HORARIO",
"PROMEDIO_DIARIO", "MINIMO_HORARIO", "MAXIMO_OCTOHORARIO", "VARIACION_MAX_HOR",
"VARIACION_PRM_DIA", "OSCILACION_DIARIO", "ESTACIONALIDAD_MAX",
"ESTACIONALIDAD_MED", "X"), row.names = c(NA, -55L), class = "data.frame")
library(ggplot2)
library(reshape2)
library(grid)
datos=read.csv("previozono.csv",header=T,sep=";", na.strings="-99.9")
datap1=cbind.data.frame(datos$ESTACION,datos$MAXIMO_HORARIO,datos$PROMEDIO_DIARIO)
names(datap1) <- c("estacion","Maximo_horario","Promedio_diario")
dataplot1 <- melt(datap1,id.vars='estacion')
plot1=ggplot(dataplot1)+ geom_bar(aes(x=estacion,y=value,fill=variable),
stat='identity',position='dodge') + xlab(" ") + ylab(" ") +
theme(axis.text.x=element_text(angle=80, size=8, hjust=1, vjust=1),legend.position="bottom") +
theme(axis.text.y=element_text(size=8)) +
scale_y_continuous(limits = c(0,250),breaks=c(0,50,100,150,200,250)) +
theme(plot.margin=unit(c(0,1,0,0),"mm")) +
ggtitle(paste("Ozono - Máximo horario y promedio diario - ",format(Sys.time(), "%d/%m/%Y"),sep="")) +
scale_fill_manual(values=c("#E95875", "#99CCFF")) + labs(fill="")
最佳答案
您可以通过 geom_segment
实现此目的像这样(对于此解决方案,您将需要 datap1
的宽格式数据):
ggplot(datap1) +
geom_segment(aes(x=estacion, xend=estacion, y=Promedio_diario, yend=Maximo_horario), size=3, color="orange") +
geom_hline(yintercept=mean((datap1$Maximo_horario + datap1$Promedio_diario)/2, na.rm=TRUE), color="red") +
theme_bw() +
theme(axis.text.x=element_text(angle=90))
geom_linerange
会给你同样的结果:
ggplot(datap1) +
geom_linerange(aes(x=estacion, y=average, ymin=Promedio_diario, ymax=Maximo_horario), size=3, color="orange") +
geom_hline(yintercept=mean((datap1$Maximo_horario + datap1$Promedio_diario)/2, na.rm=TRUE), color="red") +
theme_bw() +
theme(axis.text.x=element_text(angle=90))
geom_pointrange
也可能是一种选择。
关于r - geom_bar 从最小到最大数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916770/
“用 Haskell 进行函数式思考”中的练习之一是使用融合定律使程序更加高效。我在尝试复制答案时遇到了一些麻烦。 部分计算要求您将 maximum (xs++ map (x+) xs) 转换为 ma
我正在尝试获得 R 中最大/最小的可表示数字。 输入“.Machine”后 我有: $double.xmin [1] 2.225074e-308 $double.xmax [1] 1.797693e+
有没有办法更改浏览器验证消息 请检查所附图片。 我目前正在使用 wooCommerce 目前它显示小于或等于 X 个数字,我想更改为请求超过 X 个项目的报价。 请多多指教 最佳答案 您需要使用oni
我正在尝试将解决方案从 Excel 求解器复制到 R 中,但不知道从哪里开始。 问题: 每小时选择 5 个选项(5 行),以最大化“分数”的总和,而无需在多个小时内选择同一组 2 次。 换句话说: 最
Haskell 中是否有这样的功能: max_of_type :: (Num a) => a 所以: max_of_type :: Int == 2 ^ 31 - 1 // for example,
我有这两个表示时间范围(秒)的输入字段,我需要这样设置,以便“from/min”字段不能高于“to/max”,反之亦然。 到目前为止我得到了这个: jQuery(document).ready(fun
我有一个看起来像这样的表: http://sqlfiddle.com/#!9/152d2/1/0 CREATE TABLE Table1 ( id int, value decimal(10,
我会尝试尽可能简单地解释它: 首先是一些带有虚拟数据的数据库结构。 结构 tb_spec_fk feature value ----------------- 1 1 1
我有两个表。 表 1: +---------+---------+ | Lead_ID | Deal_ID | +---------+---------+ | 2323 | null |
我的数据库中有一个字段可以包含数字,例如8.00 或范围编号,例如8.00 - 10.00。 如果您将每个数字作为单独的数字,我需要从表中获取 MIN() 和 MAX()。例如当范围为 8.00 -
max(float('nan'), 1) 计算结果为 nan max(1, float('nan')) 计算结果为 1 这是预期的行为吗? 感谢您的回答。 max 在 iterable 为空时引发异常
我想问一下如何在 CSS 中创建一个页脚栏,它具有最小宽度(比如 650 像素),并且会根据窗口大小进行拉伸(stretch),但仅限于某个点(比如 1024 像素)。 我的意思是当窗口大小为例如 1
我尝试调整表格列宽(下一个链接上的“作者”列 http://deploy.jtalks.org/jcommune/branches/1?lang=en)。我已将最小/最大属性添加到 .author-c
在 C# 中,是否有用于将最小值和最大值存储为 double 值的内置类? 此处列出的要点 http://msdn.microsoft.com/en-us/library/system.windows
问题: 每个任务队列是否可以每秒处理超过 500 个任务? 每个 GAE 应用是否可以每秒处理超过 50,000 个任务? 详细信息: Task queue quota文档说: Push Queue
我想知道是否允许最大或最小堆树具有重复值?我试图仅通过在线资源查找与此相关的信息,但一直没有成功。 最佳答案 是的,他们可以。您可以在“算法简介”(Charles E. Leiserson、Cliff
首先,我是 .NET 开发人员,喜欢 C# 中的 LINQ 和扩展方法。 但是当我编写脚本时,我需要相当于 Enumerable extension methods 的东西 任何人都可以给我任何建议/
这是一个检查最大 malloc 大小的简单程序: #include std::size_t maxDataSize = 2097152000; //2000mb void MallocTest(vo
我想找到我的数据的最小值和最大值。 我的数据文件: 1 2 4 5 -3 -13 112 -3 55 42 42 而我的脚本: {min=max=$1} {if ($1max) {max=$1}
我想查询我的Elastic-Search以获取仅具有正值的最低价格价格。我的价格也可以为零和-1;所以我不希望我的最小聚合返回0或-1。我知道我应该向查询(或过滤器)添加脚本,但是我不知道如何。我当前
我是一名优秀的程序员,十分优秀!