新手来了 我正在构建一个 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);任何帮助将不胜感激
我有一个数据集,除其他列外,还包含 3 个标题为Gender(或M)F、House(或A或B)C和Indicator(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'])
这会正确导入 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 …我在 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
) 
这是第二张地图的代码:
# US states background
alt.Chart(states).mark_geoshape(
    fill='lightgray',
    stroke='white'
).properties(
    title='US State Capitols',
    width=700,
    height=400
).project('albersUsa')
我尝试的主要事情是在第一张地图上应用第二张地图的填充和描边参数:
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
) 
我可以用这种方式更改带有值的状态轮廓的颜色,但无法用空值填充状态。
有没有解决地图上缺失数据问题的好方法?
我想使用 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)
(为裁剪图道歉,整个事情太大而无法发布)
而以下代码,使用相同的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)
我怎么能得到像上面所有变量的图表,用适当的小提琴图来显示他们的kde?
我正在使用 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
然后我修改了他们的代码以获得这个甜甜圈图:
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 …当我尝试将点图层添加到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) …我在泰坦尼克号数据集上使用 seaborn 散点图和计数图。
这是我绘制散点图的代码。我还尝试编辑图例标签。
ax = seaborn.countplot(x='class', hue='who', data=titanic)
legend_labels, _= ax.get_legend_handles_labels()
pyplot.show();
为了编辑图例标签,我这样做了。在这种情况下,不再有图例标题。如何将此标题从 '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();
我使用相同的方法编辑散点图上的图例标签,结果在这里有所不同。它使用 '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();
(1) 是否有删除和添加图例标题的参数?
(2) 我在两个不同的图上使用了相同的代码,图例的结果是不同的。为什么?
谢谢
我目前正在学习 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()
然而,除了点云之外,我还有一组由中心坐标 [cx,cy,cz] 给出的每个点云的边界框,绕 z 轴“rot_z”的旋转和边界的 [长度,宽度,高度]盒子。我想找到一种方法来渲染边界框和点云,并在每一帧更新它们(对于每一帧,有一个点云+要渲染的不同数量的边界框,并且最后一帧的旧渲染需要被清除和更新)。
有没有办法做到这一点?如果 open3d 不能做到这一点,那么在 python 中执行此操作的常用方法/库是什么?
任何建议将不胜感激,提前致谢!
只是结合上下文,我从事心理测量/心理测试。我有一个由“点”、“百分位数”、“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, …我在 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 …python ×5
ggplot2 ×3
r ×3
matplotlib ×2
pandas ×2
seaborn ×2
altair ×1
animation ×1
bounding-box ×1
choropleth ×1
cloud ×1
d3.js ×1
donut-chart ×1
geospatial ×1
heroku ×1
histogram ×1
legend ×1
open3d ×1
plotly ×1
point-clouds ×1
r-sf ×1
streamlit ×1
text ×1
tidyverse ×1