在我的日常工作中,我倾向于遇到我想以自定义方式可视化的数据.例如,自动创建类似于UML序列图的调用图,显示有向图或从数据库可视化数据(散点图,3D轮廓等).
对于图表,我倾向于使用GraphViz.对于类似UML的图和3D图,我想编写自己的软件在Linux下运行.
我通常用C++编程,用Python编写原型.
人们用什么书来学习这些基本的图形算法?我已经看到一些关于力导向布局和基于切割和包装问题的各种块式布局算法的好帖子 - 这些都是很棒的开始,但我想在我跳入之前有更多的初学者指南和概述.
我正在使用Python来处理填充了我想要运行计算的数据的CSV文件,然后绘制图形.我正在寻找一个可以使用的库,我可以将经过处理的CSV信息发送到某种类型的dict,然后选择不同的图形样式.
有没有人有任何建议?
我有一个密度图,我想添加一些摘要信息,例如在中位数放置一条线并遮蔽90%可信区间(第5和第95分位数).有没有办法在ggplot中这样做?
这是我想总结的情节类型:
我可以弄清楚如何从y = 0到y =密度(中位数(x))绘制一条线,但是我不清楚我是否可以使用90%CI对阴影进行着色.或者,我可以在密度图上方添加一个水平箱图,但不清楚如何自动旋转箱图,而不用随之旋转密度图.
x <- as.vector(rnorm(10000))
d <- as.data.frame(x=x)
library(ggplot2)
ggplot(data = d) + theme_bw() +
geom_density(aes(x=x, y = ..density..), color = 'black')
Run Code Online (Sandbox Code Playgroud)

当我正在编写我的第一个grails webflow时,我问自己是否有任何工具或脚本可以使流程可视化?
结果可以是状态图或某些数据,以便在graphviz等图形工具中呈现.
这个等式来自我之前的问题.我想绘制代表总人口的点,到目前为止,我习惯于scale_size使点的大小相对于总人口而言.
但是,我想让这些点透明,因为点覆盖了地图.但是,只要我尝试发送的消息清楚,我就可以使用其他选项.

# load required packages
library(ggmap)
library(ggplot2)
# query map of Birmingham, AL
al1 <- get_map(location = c(lon = -86.304474, lat = 32.362563), zoom = 11,
source = "osm", maptype = 'terrain')
al1MAP <- ggmap(al1)+ geom_point(data=quote_bmh,
aes(x=IntPtLon, y=IntPtLat, size=TotPop, colour="gold2"),
colour="gold2") + scale_size(range=c(0,15))
Run Code Online (Sandbox Code Playgroud) 
正如我的同事指出的那样,连接点是他们在小学教学的东西.
这是数据:
hour_timetable mean_delayed_pass
0 6.074
1 6.512
2 7.632
3 9.393
4 8.759
5 4.600
6 6.040
7 5.575
8 5.680
9 6.315
10 6.895
11 7.852
12 6.832
13 6.961
14 6.322
15 5.954
16 5.579
17 5.540
18 5.142
19 5.579
20 6.139
21 6.501
22 6.140
23 6.061
Run Code Online (Sandbox Code Playgroud)
这是代码:
library(ggplot2)
ggplot(data = test_vis, aes(x = factor(hour_timetable), y = mean_delayed_pass, group = 1)) +
ylim(0, NA) +
geom_point(color = 'purple', stat = 'identity') +
geom_line(color = 'purple') …Run Code Online (Sandbox Code Playgroud) 我试图绘制观察频率随时间变化的情况.我有一个数据集,其中数百个法则编码为0-3.我想知道结果2-3是否随着时间的推移更频繁地发生.以下是模拟数据的示例:
Data <- data.frame(
year = sample(1998:2004, 200, replace = TRUE),
score = sample(1:4, 200, replace = TRUE)
)
Run Code Online (Sandbox Code Playgroud)
如果我情节
plot(Data$year, Data$score)
Run Code Online (Sandbox Code Playgroud)
我得到一个格子矩阵,每个点填充,但我不知道哪些数字更频繁出现.有没有办法根据给定行/年的观察数量来着色或改变每个点的大小?
一些注释可能有助于回答这个问题:
1).我不知道如何对某些数字出现频率高于其他数字的数据进行抽样.我的样本程序从所有数字中均等地采样.如果有更好的方法我应该创建可重现的数据以反映后来的更多观察结果,我想知道如何.
2).这似乎最好是在散点图中可视化,但我可能是错的.我对其他可视化开放.
谢谢!
使用案例: 我使用riverplot包绘制sankey图表.我需要调整图中节点标签的文本大小.在我的情况下,默认大小太大了.
问题,我已经尝试过了:
不幸的是,包不适用于cex参数.该软件包的开发人员没有向我提供指导.r可
重现的例子:
library(riverplot)
plot(riverplot.example())
Run Code Online (Sandbox Code Playgroud)
产生:

题:
如何将节点标签(A,B,...)调整为比默认值更小或更大的尺寸?
是否可以在Google Colaboratory中使用Jupyter Widgets?
但是我收到了这条错误消息.
无法显示Map类型的Jupyter Widget.
如果您在Jupyter Notebook或JupyterLab Notebook中阅读此消息,则可能意味着小部件JavaScript仍在加载.如果此消息仍然存在,则可能意味着未安装或未启用窗口小部件JavaScript库.有关安装说明,请参阅Jupyter Widgets文档.
如果您正在另一个前端读取此消息(例如,GitHub或NBViewer上的静态呈现),则可能意味着您的前端当前不支持小部件.
是否可以使用这些小部件?或者我在某个地方犯了错误?
我正在尝试绘制运行脚本的任何网络的图形。我使用scapy收集数据包,并希望每台计算机通信有一个节点,每个连接有一个边缘。
问题是我找不到在屏幕上足够形象地显示图形的方法。到目前为止,将networkx与matlib.pyplot结合使用可带来最佳结果,但看起来仍然相当随机且混乱,标签难以读取,节点相互重叠,等等。最好还具有与图进行交互的能力-移动节点,将鼠标悬停在节点/边上以获得更多信息,放大或什至将节点群集在一起,以便在单击群集时可以看到由哪些节点组成集群。
由于分析网络数据并向图中添加节点和边将很麻烦,因此我在这里仅添加相关部分(实际上显示了我构建的图的部分):
pos = nx.spring_layout(Graph, scale=2)
edge_labels = nx.get_edge_attributes(Graph, "Protocol")
nx.draw(Graph,pos, with_labels=True, node_size=600, font_size=8, font_weight='bold')
nx.draw_networkx_edge_labels(Graph, pos, edge_labels=edge_labels, font_size=8)
plt.show()
Run Code Online (Sandbox Code Playgroud)
(我将网络导入为nx,将matplotlib.pyplot导入为plt)
我还尝试了graphviz,plotty和bokeh,但无法真正使它们正常工作,在对Google进行故障排除后,我觉得无论如何他们都无法解决我的问题,我还尝试了AdjustText-但我无法设法使其适应我的需求代码以任何方式(找不到如何获取图形的text属性)和Holoviews-但是无论我尝试什么(即使我从其站点复制并粘贴示例),它都拒绝显示图像-任一python都表示'%opts ...'是无效的语法,或者如果我尝试以其他方式更改选项,则代码将一直运行直到结束并且在屏幕上不显示任何内容。
我在网上找到了很多局部解决方案,所以它们都不起作用,有人有全面的解决方案吗?