标签: data-visualization

D3 过渡到计数

新手来了 我正在构建一个 D3 条形图,并且能够为条形高度设置动画;但是,我在每个条形旁边都有一个显示值的文本字段,随着条形高度的增加,我无法使文本计数。

我正在使用 .text 属性,我认为问题出在哪里:

g.selectAll(".myText")
      .transition()
      .text(function(d){return (d.m6+"%")}) //code for counting from previous d.m6 value?
      .attr("transform", function(d) { ...code for moving text location...)
      .duration(700)
      .ease(d3.easeLinear);
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激

animation data-visualization d3.js

1
推荐指数
1
解决办法
1175
查看次数

如何在Python中绘制一列由另一列着色的直方图?

我有一个数据集,除其他列外,还包含 3 个标题为Gender(或MFHouse(或ABCIndicator(0 或 1)的列。A我想绘制按性别着色的House 的直方图。这是我执行此操作的代码:

import pandas as pd

df = pd.read_csv('dataset.csv', usecols=['House','Gender','Indicator')

A = df[df['House']=='A']
A = pd.DataFrame(A, columns=['Indicator', 'Gender'])
Run Code Online (Sandbox Code Playgroud)

这会正确导入 House A 各自性别的值,如其内容所示:

print(A)
            Indicator    Gender
0                   1      Male
1                   1      Male
2                   1      Male
4                   1    Female
7                   1      Male
8                   1      Male
11                  1      Male
14                  1      Male
17                  1      Male
18                  1    Female
19                  1    Female …
Run Code Online (Sandbox Code Playgroud)

python visualization data-visualization histogram pandas

1
推荐指数
1
解决办法
2万
查看次数

处理 Altair choropleth 地图中的缺失值/空值

我在 Altair 中使用美国州级数据创建了一个等值线地图。但是,我没有某些州的数据。默认情况下,这些州根本不会出现在地图上。这是一个示例图像:

在此处输入图片说明

我希望空状态在地图上显示为灰色。Altair 文档显示了另一个符合此描述的地图:

在此处输入图片说明

我的问题是如何使第一张地图中具有空值的状态看起来像第二张地图中的状态。我尝试了几件事。这是我的原始地图代码:

states = alt.topo_feature(data.us_10m.url, 'states')
source = df

alt.Chart(states).mark_geoshape().encode(
    color=alt.Color('avg_prem:Q')
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['avg'])
).project(
    type='albersUsa'
).properties(
    width=700,
    height=450
) 
Run Code Online (Sandbox Code Playgroud)

这是第二张地图的代码:

# US states background
alt.Chart(states).mark_geoshape(
    fill='lightgray',
    stroke='white'
).properties(
    title='US State Capitols',
    width=700,
    height=400
).project('albersUsa')
Run Code Online (Sandbox Code Playgroud)

我尝试的主要事情是在第一张地图上应用第二张地图的填充和描边参数:

alt.Chart(states).mark_geoshape(fill='lightgray',
    stroke='white').encode(
    color=alt.Color('avg_prem:Q')
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['avg'])
).project(
    type='albersUsa'
).properties(
    width=700,
    height=450
) 
Run Code Online (Sandbox Code Playgroud)

我可以用这种方式更改带有值的状态轮廓的颜色,但无法用空值填充状态。

有没有解决地图上缺失数据问题的好方法?

python data-visualization choropleth altair

1
推荐指数
1
解决办法
1233
查看次数

Seaborn:Violinplot 在变量太多时遇到困难?

我想使用 seaborn 用 violinplots 来可视化我的整个 Pandas 数据框,并且我认为我已经进行了必要的更正,以便为我的数据框拥有的 270 个变量生成一个大图。

但是,无论我做什么,小提琴图都只显示每个变量的内部迷你箱线图(正如这里描述的另一个问题),而不是它们的 kde:

fig, ax = plt.subplots(figsize=(50,5))
ax.set_ylim(-6, 6)

a = sns.violinplot(x='variable', y='value', data=pd.melt(train_norm), ax=ax)
a.set_xticklabels(a.get_xticklabels(), rotation=90);

plt.savefig('massive_violinplot.png', figsize=(50,5), dpi=220)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

(为裁剪图道歉,整个事情太大而无法发布)

而以下代码,使用相同的pd.Dataframe,但只显示前六个变量,显示正确:

fig, ax = plt.subplots(figsize=(10,5))
ax.set_ylim(-6, 6)

a = sns.violinplot(x='variable', y='value', data=pd.melt(train_norm.iloc[:,:6]), ax=ax)
a.set_xticklabels(a.get_xticklabels(), rotation=90);

plt.savefig('massive_violinplot.png', figsize=(10,5), dpi=220)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我怎么能得到像上面所有变量的图表,用适当的小提琴图来显示他们的kde?

python data-visualization matplotlib pandas seaborn

1
推荐指数
1
解决办法
2156
查看次数

ggplot 将文本添加到 R 中圆环图的中心

我正在使用 ggplot2 处理圆环图,但我需要绘图的中心来包含文本。

这是示例数据(从该站点找到:https : //www.datanovia.com/en/blog/how-to-create-a-pie-chart-in-r-using-ggplot2/):

library(dplyr)
count.data <- data.frame(
  class = c("1st", "2nd", "3rd", "Crew"),
  n = c(325, 285, 706, 885),
  prop = c(14.8, 12.9, 32.1, 40.2)
)
count.data <- count.data %>%
  arrange(desc(class)) %>%
  mutate(lab.ypos = cumsum(prop) - 0.5*prop)
count.data
Run Code Online (Sandbox Code Playgroud)

然后我修改了他们的代码以获得这个甜甜圈图:

library(ggplot2)
library(dplyr)

mycols <- c("#0073C2FF", "#EFC000FF", "#868686FF", "#CD534CFF")

ggplot(count.data, aes(x = 2, y = prop, fill = class)) +
  geom_bar(stat = "identity", color = "white") +
  coord_polar(theta = "y", start = 0)+
  geom_text(aes(y = lab.ypos, label …
Run Code Online (Sandbox Code Playgroud)

text r data-visualization ggplot2 donut-chart

1
推荐指数
1
解决办法
2013
查看次数

添加投影时,向 geom_sf 形状添加点不起作用

当我尝试将点图层添加到geom_sf()图层和投影时,这些点似乎最终出现在德克萨斯州南部的一个位置。下面是重现此问题的最小示例。

library(sf)
library(ggplot2)
# devtools::install_github("hrbrmstr/albersusa")
library(albersusa)
crs_use = "+proj=laea +lat_0=30 +lon_0=-95"

d_points = data.frame(long = c(-110, -103, -84), 
                      lat  = c(45, 40, 41))

A = ggplot(data = usa_sf()) +
  geom_sf() + 
  geom_point(data = d_points, 
             aes(x = long, y = lat), 
             color = "red", size = 5) + 
  theme_minimal() + 
  ggtitle("(A) right point position, wrong projection")

B = ggplot(data = usa_sf()) +
  geom_sf() + 
  geom_point(data = d_points, 
             aes(x = long, y = lat), 
             color = "red", size = 5) …
Run Code Online (Sandbox Code Playgroud)

r data-visualization geospatial ggplot2 r-sf

1
推荐指数
1
解决办法
2694
查看次数

编辑 Seaborn 散点图和计数图的图例标题

我在泰坦尼克号数据集上使用 seaborn 散点图和计数图。
这是我绘制散点图的代码。我还尝试编辑图例标签。

ax = seaborn.countplot(x='class', hue='who', data=titanic)
legend_labels, _= ax.get_legend_handles_labels()
pyplot.show();
Run Code Online (Sandbox Code Playgroud)

输出

为了编辑图例标签,我这样做了。在这种情况下,不再有图例标题。如何将此标题从 'who' 重命名为 'who1' ?

ax = seaborn.countplot(x='class', hue='who', data=titanic)
legend_labels, _= ax.get_legend_handles_labels()
ax.legend(legend_labels, ['man1','woman1','child1'], bbox_to_anchor=(1,1))
pyplot.show();
Run Code Online (Sandbox Code Playgroud)

输出2

我使用相同的方法编辑散点图上的图例标签,结果在这里有所不同。它使用 'dead' 作为图例标题,并使用 'survied' 作为第一个图例标签。

ax = seaborn.scatterplot(x='age', y='fare', data=titanic, hue = 'survived')
legend_labels, _= ax.get_legend_handles_labels()
ax.legend(legend_labels, ['dead', 'survived'],bbox_to_anchor=(1.26,1))
pyplot.show();
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

(1) 是否有删除和添加图例标题的参数?

(2) 我在两个不同的图上使用了相同的代码,图例的结果是不同的。为什么?

谢谢

python data-visualization matplotlib legend seaborn

1
推荐指数
1
解决办法
4039
查看次数

如何在Python中绘制边界框并实时更新它们

我目前正在学习 open3d 来可视化点云数据。我设法使用此处介绍的非阻塞可视化实时可视化从一系列 .pcd 文件(一个文件对应一个点云)读取的一系列点云:非阻塞可视化

通过遵循文档,我能够更新“点云”类型的几何图形。这是我进行可视化的方法:

    import open3d as o3d
    import numpy as np
    import time

    geometry = o3d.geometry.PointCloud()
    geometry.points = o3d.utility.Vector3dVector(pt_clouds[0])
    o3d.utility.set_verbosity_level(o3d.utility.VerbosityLevel.Debug)

    vis = o3d.visualization.Visualizer()
    vis.create_window()
    vis.add_geometry(geometry)

    for pt_cloud in pt_clouds: #pt_clouds are the point cloud data from several .pcf files

        geometry.points = o3d.utility.Vector3dVector(pt_cloud)
        vis.update_geometry(geometry)
        vis.poll_events()
        vis.update_renderer()
        time.sleep(1 / 20)

    vis.destroy_window()
Run Code Online (Sandbox Code Playgroud)

然而,除了点云之外,我还有一组由中心坐标 [cx,cy,cz] 给出的每个点云的边界框,绕 z 轴“rot_z”的旋转和边界的 [长度,宽度,高度]盒子。我想找到一种方法来渲染边界框和点云,并在每一帧更新它们(对于每一帧,有一个点云+要渲染的不同数量的边界框,并且最后一帧的旧渲染需要被清除和更新)。

有没有办法做到这一点?如果 open3d 不能做到这一点,那么在 python 中执行此操作的常用方法/库是什么?

任何建议将不胜感激,提前致谢!

python data-visualization bounding-box point-clouds open3d

1
推荐指数
1
解决办法
1万
查看次数

使用 ggplot 的多 x 轴来呈现 z 分数、智商分数和原始数据

只是结合上下文,我从事心理测量/心理测试。我有一个由“点”、“百分位数”、“z_real”、“z_normal”、“iq”组成的数据集。我想要一个 ggplot,其中可以呈现 Z_score(来自我的原始数据)、z_score(具有基础正态分布),然后有两个带有“原始分数”和“智商分数”的补充 x 轴。这在统计中很常见,您可以在下面查看

普通的

这是目前的剧情

当前的

这是我得到的最好的解决方案

最佳剧情

这就是想要的剧情

想要的情节

我正在与 tidyverse 合作,我想留在其中。以前的一些帖子对我有帮助,例如这个[一] [5]和这个[一] [6]。

谢谢。(部分)数据和代码在这里:

ask_ds <- structure(list(points = c(17, 17, 2, 16, 11, 17, 20, 16, 19, 
                                    15, 9, 14, 14, 16, 13, 13, 22, 21, 25, 17, 17, 17, 20, 6, 11, 
                                    5, 10, 23, 21, 19, 11, 15, 13, 17, 17, 17, 9, 18, 12, 22, 21, 
                                    23, 8, 12, 6, 7, 22, 12, 21, 16, 12, 5, 19, 19, 21, 13, 12, 18, 
                                    22, 13, 21, 24, …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2 tidyverse

1
推荐指数
1
解决办法
1064
查看次数

错误 R10(启动超时)-&gt; 在 Heroku 上构建 Streamlit Web 应用程序时,Web 进程无法在启动后 60 秒内绑定到 $PORT

我在 Heroku 上构建一个 Web 应用程序并遇到了这个问题:

2020-10-24T03:56:57.857273+00:00 app[web.1]: You can now view your Streamlit app in your browser.
2020-10-24T03:56:57.857320+00:00 app[web.1]: 
2020-10-24T03:56:57.857675+00:00 app[web.1]: Network URL: http://172.17.131.6:8501
2020-10-24T03:56:57.857819+00:00 app[web.1]: External URL: http://34.202.9.122:8501
2020-10-24T03:56:57.857932+00:00 app[web.1]: 
2020-10-24T03:56:59.458188+00:00 app[web.1]: 2020-10-24 03:56:59.458 Generating new fontManager, this may take some time...
2020-10-24T03:57:41.000000+00:00 app[api]: Build succeeded

2020-10-24T03:57:52.127634+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2020-10-24T03:57:52.147741+00:00 heroku[web.1]: Stopping process with SIGKILL
2020-10-24T03:57:52.252583+00:00 heroku[web.1]: Process exited with status 137
2020-10-24T03:57:52.301275+00:00 …
Run Code Online (Sandbox Code Playgroud)

cloud data-visualization heroku plotly streamlit

1
推荐指数
1
解决办法
993
查看次数