在R中创建热图已成为许多帖子,讨论和迭代的主题.我的主要问题是将格子levelplot()或基本图形中可用解决方案的视觉灵活性image()与基本heatmap(),pheatmap pheatmap()或gplots'的轻松聚类结合起来很棘手heatmap.2().这是我想要改变的一个小细节 - x轴上标签的对角线方向.让我告诉你我在代码中的观点.
#example data
d <- matrix(rnorm(25), 5, 5)
colnames(d) = paste("bip", 1:5, sep = "")
rownames(d) = paste("blob", 1:5, sep = "")
Run Code Online (Sandbox Code Playgroud)
您可以使用levelplot()以下方法轻松更改方向到对角
require(lattice)
levelplot(d, scale=list(x=list(rot=45)))
Run Code Online (Sandbox Code Playgroud)

但应用聚类似乎很痛苦.其他视觉选项也是如此,例如在热图单元格周围添加边框.
现在,转移到实际的heatmap()相关功能,聚类和所有基本视觉效果都非常简单 - 几乎不需要调整:
heatmap(d)
Run Code Online (Sandbox Code Playgroud)

所以在这里:
require(gplots)
heatmap.2(d, key=F)
Run Code Online (Sandbox Code Playgroud)

最后,我最喜欢的一个:
require(pheatmap)
pheatmap(d)
Run Code Online (Sandbox Code Playgroud)

但所有这些都无法旋转标签.手册pheatmap建议我可以使用grid.text自定义标签.真是太高兴 - 尤其是在聚类和更改显示标签的顺序时.除非我在这里遗漏了什么......
最后,还有一件旧货image().我可以旋转标签,一般来说它是最可定制的解决方案,但没有聚类选项.
image(1:nrow(d),1:ncol(d), d, axes=F, ylab="", xlab="")
text(1:ncol(d), 0, srt = 45, labels = rownames(d), xpd …Run Code Online (Sandbox Code Playgroud) 我有一个带有名为"AXLES"的列的Pandas DataFrame,它可以取3-12之间的整数值.我试图使用Seaborn的countplot()选项来实现以下情节:
下面的代码给出了下面的图表,其中包含实际计数,但我找不到将它们转换为频率的方法.我可以使用频率,df.AXLES.value_counts()/len(df.index)但我不知道如何将这些信息插入Seaborn countplot().
我还找到了注释的解决方法,但我不确定这是否是最佳实现.
任何帮助,将不胜感激!
谢谢
plt.figure(figsize=(12,8))
ax = sns.countplot(x="AXLES", data=dfWIM, order=[3,4,5,6,7,8,9,10,11,12])
plt.title('Distribution of Truck Configurations')
plt.xlabel('Number of Axles')
plt.ylabel('Frequency [%]')
for p in ax.patches:
ax.annotate('%{:.1f}'.format(p.get_height()), (p.get_x()+0.1, p.get_height()+50))
Run Code Online (Sandbox Code Playgroud)
我使用以下代码更接近我需要的东西,使用Pandas的条形图,抛弃Seaborn.感觉就像我使用了很多变通方法,并且必须有一种更简单的方法来实现它.这种方法的问题:
orderPandas的条形图功能中没有关键字,因为Seaborn的countplot()有,所以我不能像在countplot()中那样绘制3-12中的所有类别.即使该类别中没有数据,我也需要显示它们.由于某种原因,辅助y轴会使条形和注释混乱(请参阅在文本和条形图上绘制的白色网格线).
plt.figure(figsize=(12,8))
plt.title('Distribution of Truck Configurations')
plt.xlabel('Number of Axles')
plt.ylabel('Frequency [%]')
ax = (dfWIM.AXLES.value_counts()/len(df)*100).sort_index().plot(kind="bar", rot=0)
ax.set_yticks(np.arange(0, 110, 10))
ax2 = ax.twinx()
ax2.set_yticks(np.arange(0, 110, 10)*len(df)/100)
for p in ax.patches:
ax.annotate('{:.2f}%'.format(p.get_height()), (p.get_x()+0.15, p.get_height()+1))
Run Code Online (Sandbox Code Playgroud)有很多用于Javascript的"漂亮打印"可视化库.例如那里列出的那些.
谷歌搜索'python可视化库'只会出现像VTK和mayavi这样的东西,这些东西主要用于严格的科学用途.
那么,你知道上面链接中哪些类似于那些Javascript的Python库吗?我特别喜欢Javascript Infovis Toolkit.
那里有大量的Javascript图表库.以下是我最近使用或研究的一些内容:
在http://d3js.org/上,您还可以通过数据可视化实现更多非常酷的例子.
根据我的经验,您可以使用这些库(特别是highstock)达到极限,根据您要在图表上显示的点数和您在给定页面上想要的图表数量,您的浏览器性能会受到严重阻碍.在这个例子中,我特别谈论折线图,但我认为其他类型也是如此.有没有人对具有大型数据集和给定页面上的大量图表的不同javascript图表库的性能有经验?
我正在寻找一种方法来拉伸两个值之间的颜色渐变并标记图例,而不管数据集中的数据值范围如何.基本上,是否有功能等同ylim() 于颜色渐变?
给定通常在-1和1之间绘制az值的代码,如果中断在数据范围内,我可以绘制并标记渐变:
library(ggplot2)
#generator from http://docs.ggplot2.org/current/geom_tile.html
pp <- function (n, r = 4) {
x <- seq(-r * pi, r * pi, len = n)
df <- expand.grid(x = x, y = x)
df$r <- sqrt(df$x^2 + df$y^2)
df$z <- cos(df$r^2) * exp(-df$r / 6)
return(df)
}
t <- pp(30)
summary(t)
b <- c(-.5, 0, .5)
colors <- c('navyblue', 'darkmagenta', 'darkorange1')
p <- ggplot(data = t, aes(x = x, y = y))+
geom_tile(aes(fill = z))+
scale_fill_gradientn(colors = colors, …Run Code Online (Sandbox Code Playgroud) 我是R的新手,喜欢它,但我很惊讶完全缺乏分析动作捕捉数据的可靠包.
最简单的动作捕捉文件只是一个巨大的表格,每个点都附有一个"XYZ"坐标,并且对于每个捕获的帧都是如此.我知道我可以在R中找到单独的方法和函数来执行复杂的操作(如主成分分析),或者我可以绘制所有点的时间序列.但是,当我正在寻找可以在统计上教育我分析人类运动的例子,并提供用于数据视觉表示的漂亮工具箱时,R原来是一个寒冷的沙漠.另一方面,MATLAB具有运动捕捉工具箱和MoCap工具箱,尤其是后者具有很好的绘制和分析捕获的选项.但是说实话 - 与R相比,MATLAB的可视化引擎相当丑陋.
对R动作捕捉包的一些具体要求包括:
我在这里遗漏了什么(在我的谷歌搜索中)或者R里面真的没有mocap包吗?有没有人试过在R中玩动作捕捉数据?你能给我一些指示吗?
D3.js和Cytoscape.js有什么区别?
为什么有人会选择Cytoscape而不是D3.js?
javascript data-visualization graph-visualization d3.js cytoscape.js
我有700万份生物多样性记录的csv,其中分类学级别为列。例如:
RecordID,kingdom,phylum,class,order,family,genus,species
1,Animalia,Chordata,Mammalia,Primates,Hominidae,Homo,Homo sapiens
2,Animalia,Chordata,Mammalia,Carnivora,Canidae,Canis,Canis
3,Plantae,nan,Magnoliopsida,Brassicales,Brassicaceae,Arabidopsis,Arabidopsis thaliana
4,Plantae,nan,Magnoliopsida,Fabales,Fabaceae,Phaseoulus,Phaseolus vulgaris
Run Code Online (Sandbox Code Playgroud)
我想在D3中创建一个可视化文件,但是数据格式必须是网络,其中每个列的不同值都是上一个特定值的列的子级。我需要从csv转到类似这样的内容:
{
name: 'Animalia',
children: [{
name: 'Chordata',
children: [{
name: 'Mammalia',
children: [{
name: 'Primates',
children: 'Hominidae'
}, {
name: 'Carnivora',
children: 'Canidae'
}]
}]
}]
}
Run Code Online (Sandbox Code Playgroud)
我还没有想到不使用上千个for循环就如何做到这一点的想法。是否有人对如何在python或javascript上创建此网络提出建议?
javascript python data-visualization hierarchical-data d3.js
在C++中绘制散点图的最佳方法是什么?
您是否将数据写入文件并使用其他工具?在Python中是否有类似matplotlib的库?
javascript ×4
d3.js ×3
python ×3
r ×3
c++ ×1
charts ×1
colors ×1
cytoscape.js ×1
ggplot2 ×1
graphics ×1
heatmap ×1
label ×1
lattice ×1
matlab ×1
matplotlib ×1
pandas ×1
performance ×1
scatter-plot ×1
seaborn ×1