我试图复制GGPLOT2书,他在那里覆盖geom_rects显示在失业率趋势执政党的86页哈德利韦翰的例子.这是我的核心代码,包含一些示例数据:
library("ggplot2")
library("reshape2")
library("lubridate")
con <- textConnection("Date,Var1,Var2
8-Jan-12,100.8,116
15-Jan-12,99.4,115.5
22-Jan-12,98.4,115
28-Jan-12,97.1,114
4-Feb-12,95.9,112
11-Feb-12,95.3,113
18-Feb-12,93.9,111.5
25-Feb-12,93.5,111.5
3-Mar-12,92.6,110
10-Mar-12,91.4,108
17-Mar-12,90.2,106.8
24-Mar-12,90,107.5
31-Mar-12,89.9,106
5-Apr-12,90.4,106.5
12-Apr-12,89.8,106")
track <- read.csv(con, header=TRUE)
track$Date <- as.Date( dmy(track$Date) )
track <- melt(track,
id.vars = c("Date"))
con <- textConnection("City,From,To
Auckland,5-Apr-12,10-Apr-12
Brussels,1-Apr-12,3-Apr-12
Cleveland,24-Jan-12,26-Jan-12
Darjeeling,18-Jan-12,19-Jan-12
Erehwon,8-Feb-12,10-Feb-12
Florence,5-Mar-12,7-Mar-12
Gandalf,25-Mar-12,27-Mar-12")
trips <- read.csv(con, header=TRUE)
trips$From <- as.Date( dmy(trips$From) )
trips$To <- as.Date( dmy(trips$To) )
# draw the Time Series data
p <- ggplot(track,
aes(x = Date,
y = value,
colour=variable,
group = variable)) …Run Code Online (Sandbox Code Playgroud) 我需要制作一个图表,其功能类似于图上高密度区域的密度图,但低于某个阈值则使用单个点.我找不到任何类似于我在matplotlib缩略图库或谷歌搜索中所需的代码.我有一个我自己编写的工作代码,但它有些棘手,而且(更重要的是)当点/箱的数量很大时,需要花费不可思议的长时间.这是代码:
import numpy as np
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
import pylab
import numpy.random
#Create the colormap:
halfpurples = {'blue': [(0.0,1.0,1.0),(0.000001, 0.78431373834609985, 0.78431373834609985),
(0.25, 0.729411780834198, 0.729411780834198), (0.5,
0.63921570777893066, 0.63921570777893066), (0.75,
0.56078433990478516, 0.56078433990478516), (1.0, 0.49019607901573181,
0.49019607901573181)],
'green': [(0.0,1.0,1.0),(0.000001,
0.60392159223556519, 0.60392159223556519), (0.25,
0.49019607901573181, 0.49019607901573181), (0.5,
0.31764706969261169, 0.31764706969261169), (0.75,
0.15294118225574493, 0.15294118225574493), (1.0, 0.0, 0.0)],
'red': [(0.0,1.0,1.0),(0.000001,
0.61960786581039429, 0.61960786581039429), (0.25,
0.50196081399917603, 0.50196081399917603), (0.5,
0.41568627953529358, 0.41568627953529358), (0.75,
0.32941177487373352, 0.32941177487373352), (1.0,
0.24705882370471954, 0.24705882370471954)]}
halfpurplecmap = mpl.colors.LinearSegmentedColormap('halfpurples',halfpurples,256)
#Create x,y arrays of normally …Run Code Online (Sandbox Code Playgroud) 我正在研究Bokeh(0.6.1)教程并尝试关闭其中一个运动图中的刻度线和标签,即散点图:
from __future__ import division
import numpy as np
from six.moves import zip
from bokeh.plotting import *
from bokeh.objects import Range1d
output_file("scatter.html")
figure()
N = 4000
x = np.random.random(size=N) * 100
y = np.random.random(size=N) * 100
radii = np.random.random(size=N) * 1.5
colors = [
"#%02x%02x%02x" % (r, g, 150)
for r, g in zip(np.floor(50+2*x), np.floor(30+2*y))
]
circle(x, y, radius=radii,
fill_color=colors, fill_alpha=0.6,
line_color=None, Title="Colorful Scatter")
grid().grid_line_color = None
axis().axis_line_color = None
# QUESTION PART 1: Is this the right …Run Code Online (Sandbox Code Playgroud) 我有一个Python包tdsm,我使用Armin Ronacher的Click包第一次转换为命令行界面.我在这个目录结构中设置了我的脚本:
我也创建了一个setup.py文件:
from setuptools import setup
setup(
name='tdsm',
version='0.1',
py_modules=['tdsm.scripts.data_manager',
'tdsm.scripts.visuals'],
include_package_data=True,
install_requires=[
'click',
'numpy',
'scipy',
'pandas',
'wand',
'matplotlib',
],
entry_points='''
[console_scripts]
tdsm=tdsm.main:cli
''',
)
Run Code Online (Sandbox Code Playgroud)
经过一段时间pip install --editable .,我开始工作,直到某一点:
# tdsm --help
Run Code Online (Sandbox Code Playgroud)
现在发出:
Usage: tdsm-script.py [OPTIONS] COMMAND [ARGS]...
TDSM standard workflow -- typical sequence of commands:
`init <path>` or `open <path>`: to set up the project or to open
a new session on an existing project.
`plot`: framework for setting up …Run Code Online (Sandbox Code Playgroud) 我一直试图将甘特图的绘制扩展到更一般的情况.我在这里说明了部分结果:

在该图表上绘制了许多行程,红点表示离开,绿点表示返回.现在,这是我的挑战:
使用下面的代码生成此图表是微不足道的,并且很容易将点与红色到绿色的线连接起来,这两个点都发生在同一个月.任何人都可以帮助处理一个环绕的情况,以一般的方式进行跳跃和非闰年等?
library("ggplot2")
# ----------------
# LOAD DATA
df <- read.table(text='id,dep_month,dep_day,ret_month,ret_day
c,1,5,1,16
v,2,1,2,6
a,3,28,3,31
z,4,9,4,11
y,4,25,5,3
f,6,28,7,7
w,8,19,8,29
b,9,9,9,9
k,9,29,10,6
n,11,20,12,3', header = TRUE,
sep = ',')
# ----------------
# DRAW YEAR CHART
p <- ggplot(data = df,
aes(x = dep_day,
y = dep_month
)
)
p <- p + theme_bw()
p <- p + geom_point(colour = 'red',
size = 6)
p <- p + geom_point(aes(x = ret_day,
y = ret_month
),
colour = …Run Code Online (Sandbox Code Playgroud) 实际上,我有一个关于"会议"的数据集.例如,A,B,C有会议,那么列表将是[A,B,C].像这样,每个列表都包含参加会议的成员列表.因此:
line1 =(A,B,C)
line2 =(A,C,D,E)
line3 =(D,F,G)
...
我只想计算每对成员相遇的次数.例如,成员A从line1和line2遇到C两次,成员B从line1遇到C一次.所以,我想制作一个这样的图表..
A B C D E F G...
A . 1 2 1 ...
B 1 . 1 0
C
Run Code Online (Sandbox Code Playgroud)
...
我觉得一开始会很容易,但我很困惑.请帮助我,并提前感谢你.
我在下面创建了以下图表 igraph
set.seed(1410)
df<-data.frame(
"site.x"=c(rep("a",4),rep("b",4),rep("c",4),rep("d",4)),
"site.y"=c(rep(c("e","f","g","h"),4)),
"bond.strength"=sample(1:100,16, replace=TRUE))
library(igraph)
df<-graph.data.frame(df)
V(df)$names <- c("a","b","c","d","e","f","g","h")
layOUT<-data.frame(x=c(rep(1,4),rep(2,4)),y=c(4:1,4:1))
E(df)[ bond.strength < 101 ]$color <- "red"
E(df)[ bond.strength < 67 ]$color <- "yellow"
E(df)[ bond.strength < 34 ]$color <- "green"
V(df)$color <- "white"
l<-as.matrix(layOUT)
plot(df,layout=l,vertex.size=10,vertex.label=V(df)$names,
edge.arrow.size=0.01,vertex.label.color = "black")
Run Code Online (Sandbox Code Playgroud)

我想显示所有顶点/节点,但只显示bond.strength> 34的边(即只有红色和黄色边).我可以通过将bond.strength <34设置为白色来控制这个,但是当我在实际数据集上完成时它不是很漂亮,因为白色边缘"穿过"其他边缘,即

有没有其他方法可以简单地控制哪些边是可见的,同时显示所有顶点?谢谢
当我试验热图时,这是一个循环问题,可能有一个令人沮丧的明显答案......
我回答了一个关于使用和包绘制具有不同数据的热图的问题.它基本上允许非常不同的缩放x和y轴插入,并准备好用于绘图.fieldsggplot2akima
不幸的是,我无法找到一种方法来重新标记轴,以便它们返回原始值.我知道它将涉及使用breaks和labels参数,ggplot2但我一直无法产生任何错误.我们非常感谢两种绘图方案的解决方案......
为方便起见,这是我的代码使用ggplot2:
library("akima")
library("ggplot2")
x.orig <- rnorm(20, 4, 3)
y.orig <- rnorm(20, 5e-5, 1e-5)
x <- scale(x.orig)
y <- scale(y.orig)
z <- rnorm(20)
t. <- interp(x,y,z)
t.df <- data.frame(t.)
gt <- data.frame( expand.grid(x=t.$x,
y=t.$y),
z=c(t.$z),
value=cut(c(t.$z),
breaks=seq(min(z),max(z),0.25)))
p <- ggplot(gt) + geom_tile(aes(x,y,fill=value)) +
geom_contour(aes(x=x,y=y,z=z), colour="black")
# --------------------------------------------------------------
# Solution below prompted by X. He's answer:
get.labels <- function(break.points, orig.data, scaled.data, digits) {
labels …Run Code Online (Sandbox Code Playgroud) 我有一个标准的"我可以避免循环"问题,但无法找到解决方案.
我在@splaisan回答了这个问题,但我不得不在中间部分采用一些丑陋的扭曲,for并进行多次if测试.我在这里模拟一个更简单的版本,希望有人能给出更好的答案......
问题
给定这样的数据结构:
df <- read.table(text = 'type
a
a
a
b
b
c
c
c
c
d
e', header = TRUE)
Run Code Online (Sandbox Code Playgroud)
我想识别相同类型的连续块并将它们分组.第一个块应标记为0,下一个块应标记为0,依此类推.存在无限数量的块,并且每个块可以仅与一个成员一样短.
type label
a 0
a 0
a 0
b 1
b 1
c 2
c 2
c 2
c 2
d 3
e 4
Run Code Online (Sandbox Code Playgroud)
我的解决方案
我不得不求助于for循环来执行此操作,这里是代码:
label <- 0
df$label <- label
# LOOP through the label column and increment the label
# whenever a new …Run Code Online (Sandbox Code Playgroud) 我想要标记,如空格,+,或x,或.,或任何内部厚度可调; 事实上,像Origin一样.它似乎需要定制.
代码示例:
import numpy as np
import matplotlib.pyplot as plt
plt.plot(np.arange(10) ** 2,
'k-',
marker = 's',
mfc = 'none',
lw = 2,
mew = 2,
ms = 20)
plt.show()
Run Code Online (Sandbox Code Playgroud)