标签: data-visualization

Vega-Lite / Altair:如何居中或裁剪欧洲地图?

我有一些关于欧洲国家的数据。我正在尝试使用 world-110m 数据在 Altair / Vega-Lite 中创建可视化。从技术上讲,一切都很好,除了国家的编码边界还包括遥远的领土,产生了一个可怕的地图,如下所示:

糟糕的欧洲地图

这是我的代码:

countries = alt.topo_feature(data.world_110m.url, 'countries')
source = df.copy()

map = alt.Chart(countries).mark_geoshape(
    stroke='black'
    ).encode(
    color=alt.Color('SomeStat:Q', sort="descending", scale=alt.Scale(
        scheme='inferno', domain=(min_value,max_value)), legend=alt.Legend(title="", tickCount=6))
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'CountryId', ['SomeStat', 'CountryName'])
).project(
    type='mercator'
)
Run Code Online (Sandbox Code Playgroud)

有没有办法裁剪这张地图或将其居中,以便我只看到欧洲而不是世界各地的偏远地区?

或者,我是否应该使用更好的仅包含欧洲的公共数据集?

gis data-visualization vega vega-lite altair

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

D3更新条形图VUE.js

嘿,我在 Vue 中使用 d3 图表时遇到问题。除了更新数据之外,一切都加载正常。

我使用 props 来传递数据,当数据更改我的图表而不是更新时,它会在当前图表下方创建另一个图表。

我想要做的是保留当前图表并在数据变化时仅更新条形图

<script>
export default {
    props: {
      arr: {
          type: Array
      }, 
      colors: {
          type: Array
      }
  },
  watch: {
    arr: {
      immediate: true,
      handler(val) {
        setTimeout(() => {
          this.barCharts(val)
        }, 100);
      }
    }
  },
  methods: {
    barCharts(data) {
      let margin = { top: 40, right: 20, bottom: 50, left: 60 };
      let width = 650
      let height = 240; 

      let color = d3.scaleOrdinal().range(this.colors);
      let t = d3.transition().duration(750);

      let g = d3 …
Run Code Online (Sandbox Code Playgroud)

methods data-visualization bar-chart d3.js vue.js

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

使用 ggplot2 将带有文本的图像作为刻度标签

如何使用 将本地图像文件作为刻度标签和国旗下的国家/地区名称ggplot2

我想实现这样的目标:

在此输入图像描述

数据如下:

countries = c("Norway", "Spain", "Germany", "Canada", "China")
values = c(10, 20, 30, 22, 19)
Run Code Online (Sandbox Code Playgroud)

提前致谢!

plot r data-visualization bar-chart ggplot2

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

如何为echarts bar系列中的每个bar应用不同的线性渐变?

现在我可以对所有条形应用相同的渐变,但我需要根据值对每个条形应用线性渐变颜色。即第一条具有从颜色1到颜色2的渐变,第二条可以是从颜色1到颜色3的渐变。我已浏览文档但找不到必要的信息。

charts data-visualization bar-chart reactjs echarts

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

如何在pandas中使用melt()和Stack()

我有一个这样的数据集 -

关联

在此输入图像描述

我想重塑数据框架以进行分析 -

在此输入图像描述

我浏览了用于重塑数据框的 pandas 文档,发现了 2 个函数 stack()melt()但文档似乎不足以满足我的意图。我需要帮助。

熔化

这是我尝试过的代码,

data.melt(id_vars=['country','Lat','Long_'])
 # I want the columns: country,Lat,Long as it is and melt 
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-22-68d10347ddd7> in <module>
      1 data.melt(id_vars=['country','Lat','Long_'])
----> 2 data.stack(1)

~\anaconda3\lib\site-packages\pandas\core\frame.py in stack(self, level, dropna)
   6999             return stack_multiple(self, level, dropna=dropna)
   7000         else:
-> 7001             return stack(self, level, dropna=dropna)
   7002 
   7003     def explode(

~\anaconda3\lib\site-packages\pandas\core\reshape\reshape.py in stack(frame, level, dropna)
    489 
    490     # Will also convert negative level …
Run Code Online (Sandbox Code Playgroud)

python data-visualization matplotlib dataframe pandas

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

有没有办法防止绘图上的图例在其方向为水平方向时向上移动到图表中?

语境

我目前正在创建一个数据可视化网络应用程序。我正在使用 Plotly 创建时间序列。我对传说有疑问。

我希望图例保留在底部,因为数据的标签很长,因此会干扰数据的整体尺寸。我选择的方向是水平的

但当我添加更多数据时,图例会向上移动而不是保持在固定位置,以便可以向下添加新数据。相反,随着新数据添加到图表中,整个图例都会上升。

一项指标 多项指标

我的代码如下:

plotly_fig = px.line(data_frame=dataframe_cols1,x=dataframe_cols1.index,y=Columns_select1,
                            width=780, height=730) # Get data from the dataframe with selected columns, choose the x axis as the index of the dataframe, y axis is the data that will be multiselected
        
        # Legend settings
        plotly_fig.update_layout(showlegend=True)       
        plotly_fig.update_layout(legend=dict(
                          orientation = "h",
                          yanchor="bottom",
                          y=-.50,
                          xanchor="right",
                          x=1
                        ))    
Run Code Online (Sandbox Code Playgroud)

问题

添加新数据时如何防止图例向上移动?换句话说,如何将图例固定在其位置以防止其与图表“混合”?

python data-visualization plotly plotly-python

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

在每个组的分类 x 轴内叠加 geom_line - ggplot2

我想做一个这样的情节: 我的梦想盒子+线图

这些方框代表连续变量在组内的分布;红色圆圈是显示所有实际观察结果的点。到目前为止,一切都很好。geom_boxplot如果用+geom_point来满足群体审美的话,这会很简单。

这里有两个曲折:

  1. 点的水平位置不是随机抖动。它们是使用连续 X 轴而不是分类轴的 XY 坐标
  2. 该线是适合这些点的趋势线。

一些背景信息:该图显示了产品的使用情况(Y 轴)与允许的使用情况(X 轴)。X 轴组是互斥的、离散的层,本质上是一个无限的、连续的使用变量。EG、1-4、5-9、10-20 等。从视觉角度来看,在这些组中绘制连续图对我来说并不觉得疯狂,这有意义吗?但我不知道如何开始ggplot2同意我的观点。

我的偏好是让箱形图沿 X 轴均匀分布,但如果我需要从连续的轴开始,并且让各组在 X 轴上占据成比例的空间,那么我会满足于此(可能使用记录轴以防止下部狭窄的组被完全压碎

这应该作为示例数据:


df <- structure(list(usage = c(1L, 4L, 2L, 5L, 4L, 1L, 2L, 98L, 9L, 
                               4L, 6L, 6L, 1L, 2L, 2L, 2L, 3L, 2L, 5L, 1L), allowed = c(2, 20, 
                                                                                        3, 3, 5, 5, 1, 1, 1, 5, 10, 5, 7, 12, 2, 5, 23, 10, 5, 2), id = c(1055L, 
                                                                                                                                                          2155L, 6637L, …
Run Code Online (Sandbox Code Playgroud)

r data-visualization ggplot2

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

在 Chart.js 条形图中显示数据值(版本 3)

有一个线程有关于这个主题的许多答案(在 Chart.js 中的条形顶部显示值),但都是关于版本 2.x

您找到任何有效的解决方案了吗?如何将数据值显示在垂直条形图的顶部(或水平条形图的旁边)?

javascript data-visualization chart.js

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

Plotly 表达动画:hoverlabel 的更改仅应用于第一帧

import pandas as pd
from pandas import Timestamp
import plotly.express as px

df = pd.DataFrame({'continent': {127: 'South America',
  128: 'South America',
  129: 'South America',
  130: 'South America',
  131: 'South America'},
 'date': {127: Timestamp('2021-03-01 00:00:00'),
  128: Timestamp('2021-03-26 00:00:00'),
  129: Timestamp('2021-04-20 00:00:00'),
  130: Timestamp('2021-05-15 00:00:00'),
  131: Timestamp('2021-06-09 00:00:00')},
 'total_cases': {127: 20465329.0,
  128: 23470911.0,
  129: 26544779.0,
  130: 29891133.0,
  131: 30534015.0}})

fig = px.bar(df, x='continent', y='total_cases', animation_frame=df.date.astype(str),
#              hover_data={'animation_frame':False,
#                         'continent':False,
#                         }
            )

fig.update_traces(hovertemplate='Date:%{animation_frame}<br>Total Cases:%{y}')
Run Code Online (Sandbox Code Playgroud)

运行上述代码会输出带有动画滑块的条形图。仅当您不移动滑块时,对悬停标签所做的更改才可见。一旦你这样做并且框架发生变化,默认的plotly.express悬停标签就会重新出现(我认为是因为跟踪更新了)。有什么解决办法吗?

编辑:添加 GIF 来显示问题

在此输入图像描述

python data-visualization plotly plotly-python

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

R:将“vline”和“hline”语句组合在一起(ggplot2)

我正在使用 R 编程语言。最近,我学习了如何使用 ggplot 库“绘制”水平线和垂直线:

library(ggplot2)

# Simple scatter plot
sp <- ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point()

# Add horizontal line at y = 2O

a = sp + geom_hline(yintercept=20) 

b = sp + geom_vline(xintercept = 3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在,我尝试将这些陈述结合在一起 - 例如:

c = sp + geom_hline(yintercept=20) +  geom_hline(yintercept=15) + geom_vline(xintercept = 3) +
    geom_vline(xintercept = 5) + geom_vline(xintercept = 6) + geom_hline(yintercept=35)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题:我正在尝试修改上面的图,使其看起来像这样:

在此输入图像描述

有人可以告诉我该怎么做吗?或者您是否必须手动将此图导出到 Microsoft Paint 中并在那里进行更改?

谢谢

plot r data-visualization scatter-plot ggplot2

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